From 85efd54f3b9f94cd83e5d583d84e6f3c0bf68006 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 17 Sep 2024 18:51:46 +0200 Subject: [PATCH 01/10] Remove unused CI Test XML files As of now, these XMLs seem to be used: xml_files/cluster_image_build.xml xml_files/container_4g_l2sim_tdd_down.xml xml_files/container_4g_l2sim_tdd.xml xml_files/container_4g_rfsim_down.xml xml_files/container_4g_rfsim_fdd_05MHz_down.xml xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml xml_files/container_4g_rfsim_fdd_05MHz.xml xml_files/container_4g_rfsim_fdd_10MHz_down.xml xml_files/container_4g_rfsim_fdd_10MHz.xml xml_files/container_4g_rfsim_fdd_20MHz_down.xml xml_files/container_4g_rfsim_fdd_20MHz.xml xml_files/container_4g_rfsim_fembms_down.xml xml_files/container_4g_rfsim_fembms.xml xml_files/container_4g_rfsim_mbms_down.xml xml_files/container_4g_rfsim_mbms.xml xml_files/container_4g_rfsim.xml xml_files/container_5g_e1_rfsim_down.xml xml_files/container_5g_e1_rfsim.xml xml_files/container_5g_f1_rfsim_down.xml xml_files/container_5g_f1_rfsim.xml xml_files/container_5g_fdd_rfsim_down.xml xml_files/container_5g_fdd_rfsim.xml xml_files/container_5g_flexric_rfsim_down.xml xml_files/container_5g_flexric_rfsim.xml xml_files/container_5g_l2sim_proxy.xml xml_files/container_5g_l2sim_tdd_down.xml xml_files/container_5g_l2sim_tdd.xml xml_files/container_5g_rfsim_24prb_down.xml xml_files/container_5g_rfsim_24prb.xml xml_files/container_5g_rfsim_2x2_down.xml xml_files/container_5g_rfsim_2x2.xml xml_files/container_5g_rfsim_down.xml xml_files/container_5g_rfsim_f1_accelleran_down.xml xml_files/container_5g_rfsim_f1_accelleran.xml xml_files/container_5g_rfsim_fdd_phytest_down.xml xml_files/container_5g_rfsim_fdd_phytest.xml xml_files/container_5g_rfsim_fr2_32prb_down.xml xml_files/container_5g_rfsim_fr2_32prb.xml xml_files/container_5g_rfsim_ntn_geo_down.xml xml_files/container_5g_rfsim_ntn_geo.xml xml_files/container_5g_rfsim_sidelink_down.xml xml_files/container_5g_rfsim_sidelink.xml xml_files/container_5g_rfsim_tdd_dora_down.xml xml_files/container_5g_rfsim_tdd_dora.xml xml_files/container_5g_rfsim_u0_25prb_down.xml xml_files/container_5g_rfsim_u0_25prb.xml xml_files/container_5g_rfsim.xml xml_files/container_image_build_cross.xml xml_files/container_image_build.xml xml_files/container_l2sim_proxy.xml xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml xml_files/container_lte_b200_fdd_05Mhz_tm1.xml xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue_cleanup.xml xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml xml_files/container_lte_b200_fdd_10Mhz_tm1.xml xml_files/container_lte_b200_fdd_20Mhz_tm1.xml xml_files/container_lte_b200_fdd_cleanup.xml xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml xml_files/container_lte_b200_tdd_05Mhz_tm1.xml xml_files/container_lte_b200_tdd_10Mhz_tm1.xml xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml xml_files/container_lte_b200_tdd_20Mhz_tm1.xml xml_files/container_lte_b200_tdd_cleanup.xml xml_files/container_lte_n3xx_tdd_2x2_tm1.xml xml_files/container_lte_n3xx_tdd_2x2_tm2.xml xml_files/container_nsa_b200_quectel.xml xml_files/container_nsa_b200_terminate.xml xml_files/container_sa_aerial_quectel_cleanup.xml xml_files/container_sa_aerial_quectel.xml xml_files/container_sa_aw2s_2x2_asue.xml xml_files/container_sa_aw2s_asue_cleanup.xml xml_files/container_sa_aw2s_asue.xml xml_files/container_sa_b200_quectel.xml xml_files/container_sa_b200_terminate.xml xml_files/container_sa_e1_b200_quectel.xml xml_files/container_sa_e1_b200_terminate.xml xml_files/container_sa_f1_b200_quectel.xml xml_files/container_sa_f1_b200_terminate.xml xml_files/container_sa_fhi72_benetel_asue_cleanup.xml xml_files/container_sa_fhi72_benetel_asue.xml xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml xml_files/container_sa_fhi72_vvdn_up2.xml xml_files/container_sa_n310_2X2_100MHz_cleanup.xml xml_files/container_sa_n310_2X2_100MHz_quectel.xml xml_files/container_sa_n310_2X2_60MHz_cleanup.xml xml_files/container_sa_n310_2X2_60MHz_quectel.xml xml_files/container_sa_n310_nrue_cleanup.xml xml_files/container_sa_n310_nrue.xml xml_files/container_sa_sc_b200_quectel.xml xml_files/container_sa_sc_b200_terminate.xml xml_files/cppcheck.xml xml_files/fr1_5gc_closure.xml xml_files/fr1_5gc_start.xml xml_files/fr1_cn5g_basic_deploy.xml xml_files/fr1_cn5g_basic_undeploy.xml xml_files/fr1_enb_build.xml xml_files/fr1_epc_closure.xml xml_files/fr1_epc_start.xml xml_files/fr1_oai_cn_deploy.xml xml_files/fr1_oai_cn_undeploy.xml xml_files/gnb_phytest_usrp_run_100_2x2.xml xml_files/gnb_phytest_usrp_run_60_2x2.xml xml_files/gnb_phytest_usrp_run_60.xml xml_files/gnb_phytest_usrp_run.xml xml_files/gnb_usrp_build.xml xml_files/ldpc_gpu_test.xml xml_files/lte_2x2_tm1_quectel.xml xml_files/lte_2x2_tm2_quectel.xml xml_files/lte_oai_cn_deploy.xml xml_files/lte_oai_cn_undeploy.xml xml_files/physim_deploy_run.xml xml_files/sa_cn5g_20897_closure.xml xml_files/sa_cn5g_20897_start.xml xml_files/sa_cn5g_closure.xml xml_files/sa_cn5g_start.xml xml_files/t1_offload_test.xml xml_files/t2_offload_dec_nr_ulsim.xml xml_files/t2_offload_enc_nr_dlsim.xml Obtained by going through all RAN pipelines, copying out the XMLs of all pipelines, then doing cat xml.dump | sort | uniq --- ci-scripts/xml_files/fr1_gnb_build.xml | 41 ---- ci-scripts/xml_files/fr1_multi_node_build.xml | 73 ------- ci-scripts/xml_files/fr1_sa_oaiue_b200.xml | 120 ----------- ci-scripts/xml_files/fr1_sa_oaiue_n310.xml | 136 ------------- ci-scripts/xml_files/fr1_sa_oaiue_x300.xml | 121 ----------- ci-scripts/xml_files/fr1_sa_quectel.xml | 168 ---------------- .../xml_files/fr1_sa_quectel_162prb.xml | 157 --------------- .../xml_files/fr1_sa_quectel_stages.xml | 189 ------------------ ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml | 71 ------- .../gnb_nr_ue_usrp_run_multi_thread.xml | 71 ------- .../xml_files/gnb_nr_ue_usrp_terminate.xml | 44 ---- .../xml_files/if4p5_usrp210_band40_build.xml | 39 ---- .../if4p5_usrp210_band40_epc_closure.xml | 48 ----- .../if4p5_usrp210_band40_epc_start.xml | 48 ----- .../xml_files/if4p5_usrp210_band7_build.xml | 39 ---- .../if4p5_usrp210_band7_epc_closure.xml | 48 ----- .../if4p5_usrp210_band7_epc_start.xml | 48 ----- .../xml_files/multi_rru_band38_build.xml | 84 -------- .../multi_rru_band38_full_termination.xml | 53 ----- .../multi_rru_band38_test_10mhz_tm1.xml | 87 -------- ci-scripts/xml_files/nr_ue_usrp_build.xml | 41 ---- ci-scripts/xml_files/simple_dummy_build.xml | 47 ----- ci-scripts/xml_files/ue_band20_build.xml | 38 ---- .../xml_files/ue_band20_test_10mhz_orange.xml | 51 ----- .../xml_files/ue_band20_test_10mhz_sfr.xml | 51 ----- 25 files changed, 1913 deletions(-) delete mode 100644 ci-scripts/xml_files/fr1_gnb_build.xml delete mode 100644 ci-scripts/xml_files/fr1_multi_node_build.xml delete mode 100644 ci-scripts/xml_files/fr1_sa_oaiue_b200.xml delete mode 100644 ci-scripts/xml_files/fr1_sa_oaiue_n310.xml delete mode 100644 ci-scripts/xml_files/fr1_sa_oaiue_x300.xml delete mode 100644 ci-scripts/xml_files/fr1_sa_quectel.xml delete mode 100644 ci-scripts/xml_files/fr1_sa_quectel_162prb.xml delete mode 100644 ci-scripts/xml_files/fr1_sa_quectel_stages.xml delete mode 100644 ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml delete mode 100644 ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml delete mode 100644 ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band40_build.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band40_epc_start.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band7_build.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band7_epc_start.xml delete mode 100644 ci-scripts/xml_files/multi_rru_band38_build.xml delete mode 100644 ci-scripts/xml_files/multi_rru_band38_full_termination.xml delete mode 100644 ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml delete mode 100644 ci-scripts/xml_files/nr_ue_usrp_build.xml delete mode 100644 ci-scripts/xml_files/simple_dummy_build.xml delete mode 100644 ci-scripts/xml_files/ue_band20_build.xml delete mode 100644 ci-scripts/xml_files/ue_band20_test_10mhz_orange.xml delete mode 100644 ci-scripts/xml_files/ue_band20_test_10mhz_sfr.xml diff --git a/ci-scripts/xml_files/fr1_gnb_build.xml b/ci-scripts/xml_files/fr1_gnb_build.xml deleted file mode 100644 index 1ddc5b5682..0000000000 --- a/ci-scripts/xml_files/fr1_gnb_build.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - build-tab - Build - wrench - - 000001 - - - - - Build_eNB - Build gNB - -w USRP -c --gNB --ninja --noavx512 - 0 - 0 - True - - - diff --git a/ci-scripts/xml_files/fr1_multi_node_build.xml b/ci-scripts/xml_files/fr1_multi_node_build.xml deleted file mode 100644 index 2dbdfb2f9d..0000000000 --- a/ci-scripts/xml_files/fr1_multi_node_build.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - build-tab - Build - wrench - - 000001 000002 - 000004 000005 000003 - - - - - Build_eNB - Build eNB - -w USRP -c --eNB --ninja - 0 - 0 - True - True - - - - WaitEndBuild_eNB - Wait for end of Build eNB - 0 - 0 - - - - Build_eNB - Build gNB - -w USRP -c --gNB --ninja --noavx512 - 1 - 1 - True - True - - - - WaitEndBuild_eNB - Wait for end of Build gNB - 1 - 1 - - - - IdleSleep - Sleep - 120 - - - diff --git a/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml b/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml deleted file mode 100644 index 5f02fd6026..0000000000 --- a/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - TEST-SA-FR1-Tab1 - SA Ping DL UL with OAI NR UE - tasks - 1 - - 040000 - 000002 - 010000 - 000002 - 050000 - 050001 - 000001 - 010002 - 080000 - - - - - Initialize_OAI_UE - Initialize OAI UE - nr - --sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "serial=30C51D1" --numerology 1 -r 106 --band 78 -C 3319680000 --ue-txgain 0 -E --log_config.global_log_options level,nocolor,time - - - - Terminate_OAI_UE - Terminate OAI UE - - - - - Initialize_eNB - Initialize gNB - -O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time - 0 - 0 - nr - yes - yes - 172.21.19.14 - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping from CN to UE: 20pings in 20sec - -c 20 %cn_ip% - 5 - - - - Ping - Ping from CN to UE: 100pings in 20sec - oai_ue_obelix - -c 100 -i 0.2 %cn_ip% - 5 - - - - Iperf - iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) - -u -b 60M -t 60 -R - oai_ue_obelix - 5 - - - - Iperf - iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) - -u -b 3M -t 60 - oai_ue_obelix - 5 - - - - - Terminate_eNB - Terminate gNB - 0 - 0 - nr - - - - diff --git a/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml b/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml deleted file mode 100644 index 37b36cf431..0000000000 --- a/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - TEST-SA-FR1-Tab1 - SA Ping DL UL with OAI NR UE (N310) - tasks - 1 - - 100000 - 040000 - 000002 - 010000 - 000002 - 050000 - 050001 - 000001 - 010002 - 080000 - 200000 - - - - - Initialize_OAI_UE - Initialize OAI UE (N310) - nr - --sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "mgmt_addr=172.21.19.13,addr=192.168.10.2" --numerology 1 -r 106 --band 78 -C 3319680000 --ue-txgain 0 --ue-rxgain 70 --ue-fo-compensation --log_config.global_log_options level,nocolor,time - - - - Terminate_OAI_UE - Terminate OAI UE - - - - Custom_Command - Disable Sleep States - asterix - sudo cpupower idle-set -D 0 - - - Custom_Command - Enable Sleep States - asterix - sudo cpupower idle-set -E - - - - Initialize_eNB - Initialize gNB - -O ci-scripts/conf_files/gnb.sa.band78.106prb.usrp310.2x2.conf --gNBs.[0].min_rxtxtime 5 --sa --usrp-tx-thread-config 1 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --gNBs.[0].min_rxtxtime 5 --log_config.global_log_options level,nocolor,time - 0 - 0 - nr - yes - yes - 172.21.19.14 - numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0 - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping from CN to UE: 20pings in 20sec - oai_ue_obelix - -c 20 %cn_ip% - 5 - - - - Ping - Ping from CN to UE: 100pings in 20sec - oai_ue_obelix - -c 100 -i 0.2 %cn_ip% - 5 - - - - Iperf - iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) - oai_ue_obelix - -u -b 60M -t 60 -R - 5 - - - - Iperf - iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) - oai_ue_obelix - -u -b 3M -t 60 - 5 - - - - - Terminate_eNB - Terminate gNB - 0 - 0 - nr - - - - diff --git a/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml b/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml deleted file mode 100644 index 8d8ce8160a..0000000000 --- a/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - TEST-SA-FR1-Tab2 - SA Ping DL UL with OAI NR UE (X300) - tasks - 1 - - 041000 - 000002 - 011000 - 000002 - 051000 - 051001 - 000001 - 010002 - 080000 - - - - - Initialize_OAI_UE - Initialize OAI UE (X300) - nr - --sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "addr=192.168.60.2" --numerology 1 -r 106 --band 78 -C 3319680000 --ue-txgain 0 --ue-rxgain 70 --ue-fo-compensation --log_config.global_log_options level,nocolor,time - - - - Terminate_OAI_UE - Terminate OAI UE - - - - - Initialize_eNB - Initialize gNB - -O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf --sa --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time - 0 - 0 - nr - yes - yes - 172.21.19.14 - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping from CN to UE: 20pings in 20sec - oai_ue_obelix - -c 20 %cn_ip% - 5 - - - - Ping - Ping from CN to UE: 100pings in 20sec - oai_ue_obelix - -c 100 -i 0.2 %cn_ip% - 5 - - - - Iperf - iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) - oai_ue_obelix - -u -b 60M -t 60 -R - 5 - - - - Iperf - iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) - oai_ue_obelix - -u -b 3M -t 60 - 5 - - - - - Terminate_eNB - Terminate gNB - 0 - 0 - nr - - - - diff --git a/ci-scripts/xml_files/fr1_sa_quectel.xml b/ci-scripts/xml_files/fr1_sa_quectel.xml deleted file mode 100644 index 63e9d4efc8..0000000000 --- a/ci-scripts/xml_files/fr1_sa_quectel.xml +++ /dev/null @@ -1,168 +0,0 @@ - - - TEST-SA-FR1-Tab1 - SA Ping DL UL with Quectel, 2.5ms TDD - tasks - 1 - - 100000 - 300000 - 010000 - 040000 - 010010 - 050000 - 050001 - 070000 - 070001 - 070002 - 010001 - 080000 - 020000 - 200000 - - - - - Custom_Command - Disable Sleep States - asterix - sudo cpupower idle-set -D 0 - - - Custom_Command - Enable Sleep States - asterix - sudo cpupower idle-set -E - - - Custom_Command - Reboot USRP - asterix - ssh root@172.21.19.14 reboot ; sleep 45 - - - - Initialize_UE - Initialize Quectel - nrmodule2_quectel - - - Attach_UE - Attach Quectel UE - nrmodule2_quectel - - - Detach_UE - Detach Quectel UE - nrmodule2_quectel - - - Terminate_UE - Terminate Quectel - nrmodule2_quectel - - - - Initialize_eNB - Initialize gNB - -O ci-scripts/conf_files/gnb.sa.band78.106prb.usrpn310.ddsuu-2x2.conf --sa -q --usrp-tx-thread-config 1 --T_stdout 2 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --log_config.global_log_options level,nocolor,time - 0 - 0 - nr - yes - yes - datalog_rt_stats.2x2.yaml - 172.21.19.14 - numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0 - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping: 40pings in 40sec - nrmodule2_quectel - -c 40 %cn_ip% - 1 - 10 - - - - Ping - Ping: 100pings in 20sec - nrmodule2_quectel - -c 100 -i 0,2 %cn_ip% - 1 - 10 - - - - Iperf - iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) - -u -b 60M -t 60 -R - nrmodule2_quectel - 5 - 95 - - - - Iperf - iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) - -u -b 7M -t 60 - nrmodule2_quectel - 5 - 95 - - - - Iperf - iperf (BIDIR TCP)(10 sec)(single-ue profile) - -t 10 --bidir - nrmodule2_quectel - - - - - Terminate_eNB - Terminate gNB - 0 - 0 - nr - 5,80,100,100 - 5,80,100,100 - - - - diff --git a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml deleted file mode 100644 index d6fe76b81e..0000000000 --- a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - TEST-SA-FR1-Tab3 - SA 162PRB - tasks - 1 - - 100000 - 010000 - 042000 - 010001 - 052000 - 000001 - 072000 - 000001 - 072001 - 000001 - 072002 - 000001 - 010011 - 010002 - 080000 - 200000 - - - - - Initialize_UE - Initialize Quectel - nrmodule2_quectel - - - Attach_UE - Attach Quectel UE - nrmodule2_quectel - - - Detach_UE - Detach Quectel UE - nrmodule2_quectel - - - Terminate_UE - Terminate Quectel - nrmodule2_quectel - - - - - Initialize_eNB - Initialize gNB - -O ci-scripts/conf_files/gnb.sa.band78.162prb.usrpn310.2x2.conf --sa -q --usrp-tx-thread-config 1 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --log_config.global_log_options level,nocolor,time - 0 - 0 - nr - yes - yes - datalog_rt_stats.2x2.yaml - 172.21.19.14 - numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0 - - - - Custom_Command - Disable Sleep States - asterix - sudo cpupower idle-set -D 0 - - - Custom_Command - Enable Sleep States - asterix - sudo cpupower idle-set -E - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping: 40pings in 40sec - nrmodule2_quectel - -c 40 %cn_ip% - 1 - 20 - - - - - Iperf - iperf (DL/180Mbps/UDP)(60 sec)(single-ue profile) - -u -b 180M -t 60 -R - nrmodule2_quectel - 50 - 50 - - - - Iperf - iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) - -u -b 3M -t 60 - nrmodule2_quectel - 5 - 95 - - - - Iperf - iperf (BIDIR TCP)(10 sec)(single-ue profile) - -t 10 --bidir - nrmodule2_quectel - - - - - Terminate_eNB - Terminate gNB - 0 - 0 - nr - 5,80,100,100 - 5,80,100,100 - - - - diff --git a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml deleted file mode 100644 index f921f9658b..0000000000 --- a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml +++ /dev/null @@ -1,189 +0,0 @@ - - - TEST-SA-FR1-Tab2 - SA Staged DL with QUECTEL - tasks - 1 - - 011002 - 100000 - 041000 - 000002 - 011000 - 011001 - 000001 - 051000 - 000001 - 071000 - 000001 - 071001 - 000001 - 071002 - 000001 - 071003 - 000001 - 071004 - 000001 - 071005 - 000001 - 011011 - 011002 - 081000 - 200000 - - - - - Custom_Command - Disable Sleep States - asterix - sudo cpupower idle-set -D 0 - - - Custom_Command - Enable Sleep States - asterix - sudo cpupower idle-set -E - - - - Initialize_UE - Initialize Quectel - nrmodule2_quectel - - - Attach_UE - Attach Quectel UE - nrmodule2_quectel - - - Detach_UE - Detach Quectel UE - nrmodule2_quectel - - - Terminate_UE - Terminate Quectel - nrmodule2_quectel - - - - Initialize_eNB - Initialize gNB - -O ci-scripts/conf_files/gnb.sa.band78.106prb.usrp310.2x2.conf --sa -q --usrp-tx-thread-config 1 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --log_config.global_log_options level,nocolor,time - 0 - 0 - nr - yes - yes - datalog_rt_stats.2x2.yaml - 172.21.19.14 - numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0 - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping: 40pings in 40sec - nrmodule2_quectel - -c 40 %cn_ip% - 1 - 20 - - - - - Iperf - iperf (DL/10Mbps/UDP)(30 sec)(single-ue profile) - -u -b 10M -t 30 -R - nrmodule2_quectel - 5 - 95 - - - Iperf - iperf (DL/20Mbps/UDP)(30 sec)(single-ue profile) - -u -b 20M -t 30 -R - nrmodule2_quectel - 5 - 95 - - - Iperf - iperf (DL/40Mbps/UDP)(30 sec)(single-ue profile) - -u -b 40M -t 30 -R - nrmodule2_quectel - 5 - 95 - - - Iperf - iperf (DL/60Mbps/UDP)(30 sec)(single-ue profile) - -u -b 60M -t 30 -R - nrmodule2_quectel - 5 - 95 - - - Iperf - iperf (DL/90Mbps/UDP)(30 sec)(single-ue profile) - -u -b 90M -t 30 -R - nrmodule2_quectel - 10 - 90 - - - Iperf - iperf (DL/130Mbps/UDP)(30 sec)(single-ue profile) - -u -b 130M -t 30 -R - nrmodule2_quectel - 50 - 50 - - - - - Terminate_eNB - Terminate gNB - 0 - 0 - nr - 5,80,100,100 - 5,80,100,100 - - - - diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml deleted file mode 100644 index b07bd2b6dd..0000000000 --- a/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - run-oai-gnb-nr-ue - Run-gNB-and-NR-UE - tasks - 1 - -090101 000001 090102 000002 090108 090109 - - - - - Initialize_eNB - Initialize gNB USRP - -O ci-scripts/conf_files/gnb.band78.106prb.usrpn300.phytest-dora.conf --phy-test --log_config.global_log_options level,nocolor,time - NR - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Waiting for NR UE to synchronize w/ gNB - 180 - - - - Initialize_OAI_UE - Initialize NR UE USRP - --phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50 --log_config.global_log_options level,nocolor,time - NR - - - - Terminate_OAI_UE - Terminate NR UE - NR - - - - Terminate_eNB - Terminate gNB - NR - - - diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml deleted file mode 100644 index dfc088fc34..0000000000 --- a/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - run-oai-gnb-nr-ue-tx-write-thread - Run-gNB-and-NR-UE-TX-Write-Thread - tasks - 1 - -090103 000001 090104 000002 090108 090109 - - - - - Initialize_eNB - Initialize gNB USRP (Tx-Write-Threading enabled) - -O ci-scripts/conf_files/gnb.band78.106prb.usrpn300.phytest-dora.conf --phy-test --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time - NR - - - - IdleSleep - Sleep - 5 - - - - IdleSleep - Waiting for NR UE to synchronize w/ gNB - 180 - - - - Initialize_OAI_UE - Initialize NR UE USRP - --phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75 --log_config.global_log_options level,nocolor,time - NR - - - - Terminate_OAI_UE - Terminate NR UE - NR - - - - Terminate_eNB - Terminate gNB - NR - - - diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml deleted file mode 100644 index 81df042865..0000000000 --- a/ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - terminate-oai-gnb-nr-ue - Terminate-gNB-and-NR-UE - tasks - -090108 090109 - - - - - Terminate_OAI_UE - Terminate NR UE - NR - - - - Terminate_eNB - Terminate gNB - NR - - - diff --git a/ci-scripts/xml_files/if4p5_usrp210_band40_build.xml b/ci-scripts/xml_files/if4p5_usrp210_band40_build.xml deleted file mode 100644 index d383dbb61b..0000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band40_build.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - build-tab - Build - wrench - - 010101 - - - - - - Build_eNB - Build eNB (USRP -- Ethernet Fronthaul) - -w USRP -c --eNB --ninja - - - diff --git a/ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml b/ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml deleted file mode 100644 index 8587db959d..0000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - epc-closure - EPC-Closure - log-out - - 050201 060201 070201 - - - - - - Terminate_HSS - Terminate HSS - - - - Terminate_MME - Terminate MME - - - - Terminate_SPGW - Terminate SPGW - - - diff --git a/ci-scripts/xml_files/if4p5_usrp210_band40_epc_start.xml b/ci-scripts/xml_files/if4p5_usrp210_band40_epc_start.xml deleted file mode 100644 index 0a788cb614..0000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band40_epc_start.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - epc-start-tab - EPC-Start - log-in - - 050101 060101 070101 - - - - - - Initialize_HSS - Initialize HSS - - - - Initialize_MME - Initialize MME - - - - Initialize_SPGW - Initialize SPGW - - - diff --git a/ci-scripts/xml_files/if4p5_usrp210_band7_build.xml b/ci-scripts/xml_files/if4p5_usrp210_band7_build.xml deleted file mode 100644 index d383dbb61b..0000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band7_build.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - build-tab - Build - wrench - - 010101 - - - - - - Build_eNB - Build eNB (USRP -- Ethernet Fronthaul) - -w USRP -c --eNB --ninja - - - diff --git a/ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml b/ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml deleted file mode 100644 index 8587db959d..0000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - epc-closure - EPC-Closure - log-out - - 050201 060201 070201 - - - - - - Terminate_HSS - Terminate HSS - - - - Terminate_MME - Terminate MME - - - - Terminate_SPGW - Terminate SPGW - - - diff --git a/ci-scripts/xml_files/if4p5_usrp210_band7_epc_start.xml b/ci-scripts/xml_files/if4p5_usrp210_band7_epc_start.xml deleted file mode 100644 index e8d08de507..0000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band7_epc_start.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - epc-start-tab - EPC-Start - log-in - - 050101 060101 070101 040101 - - - - - - Initialize_HSS - Initialize HSS - - - - Initialize_MME - Initialize MME - - - - Initialize_SPGW - Initialize SPGW - - - diff --git a/ci-scripts/xml_files/multi_rru_band38_build.xml b/ci-scripts/xml_files/multi_rru_band38_build.xml deleted file mode 100644 index 1370a3a396..0000000000 --- a/ci-scripts/xml_files/multi_rru_band38_build.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - build-tab - Build - wrench - - 010101 010102 010103 - 000102 000103 000101 - - - - - Build_eNB - Build RCC - -w USRP -c --eNB --ninja - 0 - 0 - True - - - - WaitEndBuild_eNB - Wait for end of Build RCC - -w USRP -c --eNB --ninja - 0 - 0 - - - - Build_eNB - Build Master RRU - -w USRP -c --RU --ninja - 1 - 1 - True - - - - WaitEndBuild_eNB - Wait for end of Build Master RRU - -w USRP -c --RU --ninja - 1 - 1 - - - - Build_eNB - Build Slave RRU - -w USRP -c --RU --ninja - 2 - 2 - True - - - - WaitEndBuild_eNB - Wait for end of Build Slave RRU - -w USRP -c --RU --ninja - 2 - 2 - - - diff --git a/ci-scripts/xml_files/multi_rru_band38_full_termination.xml b/ci-scripts/xml_files/multi_rru_band38_full_termination.xml deleted file mode 100644 index d63c73aec5..0000000000 --- a/ci-scripts/xml_files/multi_rru_band38_full_termination.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - test-full-termintation - Test-RCC-RRUs-Termination - off - - 030211 030212 030213 - - - - - Terminate_eNB - Terminate RCC - 0 - 0 - - - - Terminate_eNB - Terminate Master RRU - 1 - 1 - - - - Terminate_eNB - Terminate Slave RRU - 2 - 2 - - - diff --git a/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml b/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml deleted file mode 100644 index fdde60bd4c..0000000000 --- a/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - test-multi-rru-10 - Test-Multi-RRU-10MHz - tasks - 1 - - 030211 030212 030213 - 030111 030112 030113 - 000001 - 030211 030212 030213 - - - - - IdleSleep - Sleep - 60 - - - - Initialize_eNB - Initialize RCC (TDD/Band38/10MHz) - -O ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf --noS1 --log_config.global_log_options level,nocolor,time - 0 - 0 - - - - Initialize_eNB - Initialize Master RRU (TDD/Band38/10MHz) - -O ci-scripts/conf_files/rru.band38.tm1.master.conf --noS1 --log_config.global_log_options level,nocolor,time - 1 - 1 - - - - Initialize_eNB - Initialize Slave RRU (TDD/Band38/10MHz) - -O ci-scripts/conf_files/rru.band38.tm1.slave.conf --noS1 --log_config.global_log_options level,nocolor,time - 2 - 2 - - - - Terminate_eNB - Terminate RCC - 0 - 0 - - - - Terminate_eNB - Terminate Master RRU - 1 - 1 - - - - Terminate_eNB - Terminate Slave RRU - 2 - 2 - - - diff --git a/ci-scripts/xml_files/nr_ue_usrp_build.xml b/ci-scripts/xml_files/nr_ue_usrp_build.xml deleted file mode 100644 index dd3a10f2f5..0000000000 --- a/ci-scripts/xml_files/nr_ue_usrp_build.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - nr-ue-build-tab - Build-NR-UE - wrench - 1 - -010102 - - - - - TestUE - Build_OAI_UE - Build NR UE (USRP) - --nrUE -w USRP --ninja - false - - - diff --git a/ci-scripts/xml_files/simple_dummy_build.xml b/ci-scripts/xml_files/simple_dummy_build.xml deleted file mode 100644 index a3649c210c..0000000000 --- a/ci-scripts/xml_files/simple_dummy_build.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - build-tab - Build - wrench - - 000001 - - - - - - Build_eNB - Build Master eNB (USRP) - -w USRP -c --eNB - 0 - 0 - - - - IdleSleep - Sleep - 5 - - - diff --git a/ci-scripts/xml_files/ue_band20_build.xml b/ci-scripts/xml_files/ue_band20_build.xml deleted file mode 100644 index d867929630..0000000000 --- a/ci-scripts/xml_files/ue_band20_build.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - build-tab - Build - wrench - -090101 - - - - - Build_OAI_UE - Build OAI UE - -w USRP --UE --ninja - - - diff --git a/ci-scripts/xml_files/ue_band20_test_10mhz_orange.xml b/ci-scripts/xml_files/ue_band20_test_10mhz_orange.xml deleted file mode 100644 index f1ad3e17b7..0000000000 --- a/ci-scripts/xml_files/ue_band20_test_10mhz_orange.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - test-10mhz-orange - Test-10Mhz-Orange - tasks - 1 - - 090109 - 090110 000001 090109 - - - - - Initialize_OAI_UE - Initialize OAI UE -- sniffing Orange frequency - -C 816000000 -r 50 --ue-rxgain 135 --ue-scan-carrier --no-L2-connect --log_config.global_log_options level,nocolor,time - - - - IdleSleep - Sleep - 30 - - - - Terminate_OAI_UE - Terminate OAI UE - - - diff --git a/ci-scripts/xml_files/ue_band20_test_10mhz_sfr.xml b/ci-scripts/xml_files/ue_band20_test_10mhz_sfr.xml deleted file mode 100644 index 7ab83443c8..0000000000 --- a/ci-scripts/xml_files/ue_band20_test_10mhz_sfr.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - test-10mHz-sfr - Test-10MHz-SFR - tasks - 1 - - 090109 - 090111 000001 090109 - - - - - Initialize_OAI_UE - Initialize OAI UE -- sniffing SFR frequency - -C 806000000 -r 50 --ue-rxgain 130 --ue-scan-carrier --no-L2-connect --log_config.global_log_options level,nocolor,time - - - - IdleSleep - Sleep - 30 - - - - Terminate_OAI_UE - Terminate OAI UE - - - From aeb6442f71e555e8abf4f42684d4bb67b6c7ac23 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 17 Sep 2024 18:54:27 +0200 Subject: [PATCH 02/10] Remove unused Build_OAI_UE XML step: no XML uses this --- ci-scripts/cls_oaicitest.py | 107 ---------------------------------- ci-scripts/main.py | 10 ---- ci-scripts/xml_class_list.yml | 1 - 3 files changed, 118 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 2a23f43dd7..049779bf4f 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -275,7 +275,6 @@ class OaiCiTest(): self.UE_instance = 0 self.UESourceCodePath = '' self.UELogFile = '' - self.Build_OAI_UE_args = '' self.Initialize_OAI_UE_args = '' self.clean_repository = True self.air_interface='' @@ -285,112 +284,6 @@ class OaiCiTest(): self.svr_id = None self.cmd_prefix = '' # prefix before {lte,nr}-uesoftmodem - - def BuildOAIUE(self,HTML): - if self.UEIPAddress == '' or self.ranRepository == '' or self.ranBranch == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '': - HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') - SSH = sshconnection.SSHConnection() - SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword) - result = re.search('--nrUE', self.Build_OAI_UE_args) - if result is not None: - self.air_interface='nr-uesoftmodem' - ue_prefix = 'NR ' - else: - self.air_interface='lte-uesoftmodem' - ue_prefix = '' - result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository) - if result is not None: - full_ran_repo_name = self.ranRepository.replace('git/', 'git') - else: - full_ran_repo_name = self.ranRepository + '.git' - SSH.command(f'mkdir -p {self.UESourceCodePath}', '\$', 5) - SSH.command(f'cd {self.UESourceCodePath}', '\$', 5) - SSH.command(f'if [ ! -e .git ]; then stdbuf -o0 git clone {full_ran_repo_name} .; else stdbuf -o0 git fetch --prune; fi', '\$', 600) - # here add a check if git clone or git fetch went smoothly - SSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5) - SSH.command('git config user.name "OAI Jenkins"', '\$', 5) - if self.clean_repository: - SSH.command('ls *.txt', '\$', 5) - result = re.search('LAST_BUILD_INFO', SSH.getBefore()) - if result is not None: - mismatch = False - SSH.command('grep --colour=never SRC_COMMIT LAST_BUILD_INFO.txt', '\$', 2) - result = re.search(self.ranCommitID, SSH.getBefore()) - if result is None: - mismatch = True - SSH.command('grep --colour=never MERGED_W_TGT_BRANCH LAST_BUILD_INFO.txt', '\$', 2) - if self.ranAllowMerge: - result = re.search('YES', SSH.getBefore()) - if result is None: - mismatch = True - SSH.command('grep --colour=never TGT_BRANCH LAST_BUILD_INFO.txt', '\$', 2) - if self.ranTargetBranch == '': - result = re.search('develop', SSH.getBefore()) - else: - result = re.search(self.ranTargetBranch, SSH.getBefore()) - if result is None: - mismatch = True - else: - result = re.search('NO', SSH.getBefore()) - if result is None: - mismatch = True - if not mismatch: - SSH.close() - HTML.CreateHtmlTestRow(self.Build_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK) - return - - SSH.command(f'echo {self.UEPassword} | sudo -S git clean -x -d -ff', '\$', 30) - - # if the commit ID is provided use it to point to it - if self.ranCommitID != '': - SSH.command(f'git checkout -f {self.ranCommitID}', '\$', 30) - # if the branch is not develop, then it is a merge request and we need to do - # the potential merge. Note that merge conflicts should already been checked earlier - if self.ranAllowMerge: - if self.ranTargetBranch == '': - if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'): - SSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30) - else: - logging.debug(f'Merging with the target branch: {self.ranTargetBranch}') - SSH.command(f'git merge --ff origin/{self.ranTargetBranch} -m "Temporary merge for CI"', '\$', 30) - SSH.command('source oaienv', '\$', 5) - SSH.command('cd cmake_targets', '\$', 5) - SSH.command('mkdir -p log', '\$', 5) - SSH.command('chmod 777 log', '\$', 5) - # no need to remove in log (git clean did the trick) - SSH.command(f'stdbuf -o0 ./build_oai {self.Build_OAI_UE_args} 2>&1 | stdbuf -o0 tee compile_oai_ue.log', 'Bypassing the Tests|build have failed', 1200) - SSH.command('ls ran_build/build', '\$', 3) - SSH.command('ls ran_build/build', '\$', 3) - buildStatus = True - result = re.search(self.air_interface, SSH.getBefore()) - if result is None: - buildStatus = False - SSH.command(f'mkdir -p build_log_{self.testCase_id}', '\$', 5) - SSH.command(f'mv log/* build_log_{self.testCase_id}', '\$', 5) - SSH.command(f'mv compile_oai_ue.log build_log_{self.testCase_id}', '\$', 5) - if buildStatus: - # Generating a BUILD INFO file - SSH.command(f'echo "SRC_BRANCH: {self.ranBranch}" > ../LAST_BUILD_INFO.txt', '\$', 2) - SSH.command(f'echo "SRC_COMMIT: {self.ranCommitID}" >> ../LAST_BUILD_INFO.txt', '\$', 2) - if self.ranAllowMerge: - SSH.command('echo "MERGED_W_TGT_BRANCH: YES" >> ../LAST_BUILD_INFO.txt', '\$', 2) - if self.ranTargetBranch == '': - SSH.command('echo "TGT_BRANCH: develop" >> ../LAST_BUILD_INFO.txt', '\$', 2) - else: - SSH.command(f'echo "TGT_BRANCH: {self.ranTargetBranch}" >> ../LAST_BUILD_INFO.txt', '\$', 2) - else: - SSH.command('echo "MERGED_W_TGT_BRANCH: NO" >> ../LAST_BUILD_INFO.txt', '\$', 2) - SSH.close() - HTML.CreateHtmlTestRow(self.Build_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK, 'OAI UE') - else: - SSH.close() - logging.error('\u001B[1m Building OAI UE Failed\u001B[0m') - HTML.CreateHtmlTestRow(self.Build_OAI_UE_args, 'KO', CONST.ALL_PROCESSES_OK, 'OAI UE') - HTML.CreateHtmlTabFooter(False) - self.ConditionalExit() - - def InitializeUE(self, HTML): ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] messages = [] diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 532a5f564d..46dcae929f 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -225,14 +225,6 @@ def GetParametersFromXML(action): else: CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) - elif action == 'Build_OAI_UE': - CiTestObj.Build_OAI_UE_args = test.findtext('Build_OAI_UE_args') - CiTestObj.clean_repository = test.findtext('clean_repository') - if (CiTestObj.clean_repository == 'false'): - CiTestObj.clean_repository = False - else: - CiTestObj.clean_repository = True - elif action == 'Initialize_OAI_UE': CiTestObj.Initialize_OAI_UE_args = test.findtext('Initialize_OAI_UE_args') UE_instance = test.findtext('UE_instance') @@ -780,8 +772,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re CiTestObj.DataEnableUE(HTML) elif action == 'CheckStatusUE': CiTestObj.CheckStatusUE(HTML) - elif action == 'Build_OAI_UE': - CiTestObj.BuildOAIUE(HTML) elif action == 'Initialize_OAI_UE': CiTestObj.InitializeOAIUE(HTML,RAN,EPC,CONTAINERS) elif action == 'Terminate_OAI_UE': diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml index 18c2c4632d..0b267d3a96 100755 --- a/ci-scripts/xml_class_list.yml +++ b/ci-scripts/xml_class_list.yml @@ -13,7 +13,6 @@ - Terminate_UE - Attach_UE - Detach_UE - - Build_OAI_UE - Initialize_OAI_UE - Terminate_OAI_UE - DataDisable_UE From 99226fc66c701227cbbbd0e202198c4b4d2d8d71 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 17 Sep 2024 18:57:23 +0200 Subject: [PATCH 03/10] Remove unused Initialize_OAI_UE XML step: no XML uses this --- ci-scripts/cls_oaicitest.py | 214 ---------------------------------- ci-scripts/main.py | 21 ---- ci-scripts/xml_class_list.yml | 1 - 3 files changed, 236 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 049779bf4f..4e731caab3 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -275,7 +275,6 @@ class OaiCiTest(): self.UE_instance = 0 self.UESourceCodePath = '' self.UELogFile = '' - self.Initialize_OAI_UE_args = '' self.clean_repository = True self.air_interface='' self.ue_ids = [] @@ -295,211 +294,6 @@ class OaiCiTest(): [f.result() for f in futures] HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages) - def InitializeOAIUE(self,HTML,RAN,EPC,CONTAINERS): - if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '': - HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') - - - if self.air_interface == 'lte-uesoftmodem': - result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) - if result is None: - check_eNB = True - check_OAI_UE = False - UE_prefix = '' - else: - UE_prefix = 'NR ' - SSH = sshconnection.SSHConnection() - SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword) - SSH.command(f'cd {self.UESourceCodePath}', '\$', 5) - # Initialize_OAI_UE_args usually start with -C and followed by the location in repository - SSH.command('source oaienv', '\$', 5) - SSH.command('cd cmake_targets/ran_build/build', '\$', 5) - if self.air_interface == 'lte-uesoftmodem': - result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) - # We may have to regenerate the .u* files - if result is None: - SSH.command('ls /tmp/*.sed', '\$', 5) - result = re.search('adapt_usim_parameters', SSH.getBefore()) - if result is not None: - SSH.command('sed -f /tmp/adapt_usim_parameters.sed ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf > ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf', '\$', 5) - else: - SSH.command('sed -e "s#93#92#" -e "s#8baf473f2f8fd09487cccbd7097c6862#fec86ba6eb707ed08905757b1bb44b8f#" -e "s#e734f8734007d6c5ce7a0508809e7e9c#C42449363BBAD02B66D16BC975D77CC1#" ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf > ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf', '\$', 5) - SSH.command(f'echo {self.UEPassword} | sudo -S rm -Rf .u*', '\$', 5) - SSH.command(f'echo {self.UEPassword} | sudo -S ../../nas_sim_tools/build/conf2uedata -c ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf -o .', '\$', 5) - else: - SSH.command(f'if [ -e rbconfig.raw ]; then echo {self.UEPassword} | sudo -S rm rbconfig.raw; fi', '\$', 5) - SSH.command(f'if [ -e reconfig.raw ]; then echo {self.UEPassword} | sudo -S rm reconfig.raw; fi', '\$', 5) - # Copy the RAW files from gNB running directory (maybe on another machine) - copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/rbconfig.raw', '.') - if (copyin_res == 0): - SSH.copyout(self.UEIPAddress, self.UEUserName, self.UEPassword, './rbconfig.raw', self.UESourceCodePath + '/cmake_targets/ran_build/build') - copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/reconfig.raw', '.') - if (copyin_res == 0): - SSH.copyout(self.UEIPAddress, self.UEUserName, self.UEPassword, './reconfig.raw', self.UESourceCodePath + '/cmake_targets/ran_build/build') - SSH.command(f'echo "ulimit -c unlimited && {self.cmd_prefix} ./{self.air_interface} {self.Initialize_OAI_UE_args}" > ./my-lte-uesoftmodem-run{self.UE_instance}.sh', '\$', 5) - SSH.command(f'chmod 775 ./my-lte-uesoftmodem-run {self.UE_instance}.sh', '\$', 5) - SSH.command(f'echo {self.UEPassword} | sudo -S rm -Rf {self.UESourceCodePath}/cmake_targets/ue_{self.testCase_id}.log', '\$', 5) - self.UELogFile = f'ue_{self.testCase_id}.log' - - # We are now looping several times to hope we really sync w/ an eNB - doOutterLoop = True - outterLoopCounter = 5 - gotSyncStatus = True - fullSyncStatus = True - while (doOutterLoop): - SSH.command(f'cd {self.UESourceCodePath}/cmake_targets/ran_build/build', '\$', 5) - SSH.command(f'echo {self.UEPassword} | sudo -S rm -Rf {self.UESourceCodePath}/cmake_targets/ue_{self.testCase_id}.log', '\$', 5) - SSH.command(f'echo $USER; nohup sudo -E stdbuf -o0 ./my-lte-uesoftmodem-run {self.UE_instance}.sh > {self.UESourceCodePath}/cmake_targets/ue_{self.testCase_id}.log 2>&1 &', self.UEUserName, 5) - time.sleep(6) - SSH.command('cd ../..', '\$', 5) - doLoop = True - loopCounter = 10 - gotSyncStatus = True - # the 'got sync' message is for the UE threads synchronization - while (doLoop): - loopCounter = loopCounter - 1 - if (loopCounter == 0): - # Here should never occur - logging.error('"got sync" message never showed!') - gotSyncStatus = False - doLoop = False - continue - SSH.command(f'stdbuf -o0 cat ue_{self.testCase_id}.log | egrep --text --color=never -i "wait|sync"', '\$', 4) - if self.air_interface == 'nr-uesoftmodem': - result = re.search('Starting sync detection', SSH.getBefore()) - else: - result = re.search('got sync', SSH.getBefore()) - if result is None: - time.sleep(10) - else: - doLoop = False - logging.debug('Found "got sync" message!') - if gotSyncStatus == False: - # we certainly need to stop the lte-uesoftmodem process if it is still running! - SSH.command('ps -aux | grep --text --color=never softmodem | grep -v grep', '\$', 4) - result = re.search('-uesoftmodem', SSH.getBefore()) - if result is not None: - SSH.command(f'echo {self.UEPassword} | sudo -S killall --signal=SIGINT -r *-uesoftmodem', '\$', 4) - time.sleep(3) - outterLoopCounter = outterLoopCounter - 1 - if (outterLoopCounter == 0): - doOutterLoop = False - continue - # We are now checking if sync w/ eNB DOES NOT OCCUR - # Usually during the cell synchronization stage, the UE returns with No cell synchronization message - # That is the case for LTE - # In NR case, it's a positive message that will show if synchronization occurs - doLoop = True - if self.air_interface == 'nr-uesoftmodem': - loopCounter = 10 - else: - # We are now checking if sync w/ eNB DOES NOT OCCUR - # Usually during the cell synchronization stage, the UE returns with No cell synchronization message - loopCounter = 10 - while (doLoop): - loopCounter = loopCounter - 1 - if (loopCounter == 0): - if self.air_interface == 'nr-uesoftmodem': - # Here we do have great chances that UE did NOT cell-sync w/ gNB - doLoop = False - fullSyncStatus = False - logging.debug('Never seen the NR-Sync message (Measured Carrier Frequency) --> try again') - time.sleep(6) - # Stopping the NR-UE - SSH.command('ps -aux | grep --text --color=never softmodem | grep -v grep', '\$', 4) - result = re.search('nr-uesoftmodem', SSH.getBefore()) - if result is not None: - SSH.command(f'echo {self.UEPassword} | sudo -S killall --signal=SIGINT nr-uesoftmodem', '\$', 4) - time.sleep(6) - else: - # Here we do have a great chance that the UE did cell-sync w/ eNB - doLoop = False - doOutterLoop = False - fullSyncStatus = True - continue - SSH.command(f'stdbuf -o0 cat ue_{self.testCase_id}.log | egrep --text --color=never -i "wait|sync|Frequency"', '\$', 4) - if self.air_interface == 'nr-uesoftmodem': - # Positive messaging --> - result = re.search('Measured Carrier Frequency', SSH.getBefore()) - if result is not None: - doLoop = False - doOutterLoop = False - fullSyncStatus = True - else: - time.sleep(6) - else: - # Negative messaging --> - result = re.search('No cell synchronization found', SSH.getBefore()) - if result is None: - time.sleep(6) - else: - doLoop = False - fullSyncStatus = False - logging.debug('Found: "No cell synchronization" message! --> try again') - time.sleep(6) - SSH.command('ps -aux | grep --text --color=never softmodem | grep -v grep', '\$', 4) - result = re.search('lte-uesoftmodem', SSH.getBefore()) - if result is not None: - SSH.command(f'echo {self.UEPassword} | sudo -S killall --signal=SIGINT lte-uesoftmodem', '\$', 4) - outterLoopCounter = outterLoopCounter - 1 - if (outterLoopCounter == 0): - doOutterLoop = False - - if fullSyncStatus and gotSyncStatus: - doInterfaceCheck = False - if self.air_interface == 'lte-uesoftmodem': - result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) - if result is None: - doInterfaceCheck = True - # For the moment, only in explicit noS1 without kernel module (ie w/ tunnel interface) - if self.air_interface == 'nr-uesoftmodem': - result = re.search('--noS1', str(self.Initialize_OAI_UE_args)) - if result is not None: - doInterfaceCheck = True - if doInterfaceCheck: - SSH.command('ifconfig oaitun_ue1', '\$', 4) - SSH.command('ifconfig oaitun_ue1', '\$', 4) - # ifconfig output is different between ubuntu 16 and ubuntu 18 - result = re.search('inet addr:[0-9]|inet [0-9]', SSH.getBefore()) - if result is not None: - logging.debug('\u001B[1m oaitun_ue1 interface is mounted and configured\u001B[0m') - tunnelInterfaceStatus = True - else: - logging.debug(SSH.getBefore()) - logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m') - tunnelInterfaceStatus = False - if RAN.eNBmbmsEnables[0]: - SSH.command('ifconfig oaitun_uem1', '\$', 4) - result = re.search('inet addr', SSH.getBefore()) - if result is not None: - logging.debug('\u001B[1m oaitun_uem1 interface is mounted and configured\u001B[0m') - tunnelInterfaceStatus = tunnelInterfaceStatus and True - else: - logging.error('\u001B[1m oaitun_uem1 interface is either NOT mounted or NOT configured\u001B[0m') - tunnelInterfaceStatus = False - else: - tunnelInterfaceStatus = True - else: - tunnelInterfaceStatus = True - - SSH.close() - if fullSyncStatus and gotSyncStatus and tunnelInterfaceStatus: - HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK, 'OAI UE') - logging.debug('\u001B[1m Initialize OAI UE Completed\u001B[0m') - else: - if self.air_interface == 'lte-uesoftmodem': - if RAN.eNBmbmsEnables[0]: - HTML.htmlUEFailureMsg='oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured' - else: - HTML.htmlUEFailureMsg='oaitun_ue1 interface is either NOT mounted or NOT configured' - HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'KO', CONST.OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE') - else: - HTML.htmlUEFailureMsg='nr-uesoftmodem did NOT synced' - HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'KO', CONST.OAI_UE_PROCESS_COULD_NOT_SYNC, 'OAI UE') - logging.error('\033[91mInitialize OAI UE Failed! \033[0m') - self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) - def AttachUE(self, HTML, RAN, EPC, CONTAINERS): ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] with concurrent.futures.ThreadPoolExecutor() as executor: @@ -1134,14 +928,6 @@ class OaiCiTest(): HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) def AutoTerminateUEandeNB(self,HTML,RAN,EPC,CONTAINERS): - # TODO: terminate UE? - if (self.Initialize_OAI_UE_args != ''): - self.testCase_id = 'AUTO-KILL-OAI-UE' - HTML.testCase_id = self.testCase_id - self.desc = 'Automatic Termination of OAI-UE' - HTML.desc = self.desc - self.ShowTestID() - self.TerminateOAIUE(HTML,RAN,EPC,CONTAINERS) if (RAN.Initialize_eNB_args != ''): self.testCase_id = 'AUTO-KILL-RAN' HTML.testCase_id = self.testCase_id diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 46dcae929f..e63915af40 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -225,25 +225,6 @@ def GetParametersFromXML(action): else: CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) - elif action == 'Initialize_OAI_UE': - CiTestObj.Initialize_OAI_UE_args = test.findtext('Initialize_OAI_UE_args') - UE_instance = test.findtext('UE_instance') - if (UE_instance is None): - CiTestObj.UE_instance = 0 - else: - CiTestObj.UE_instance = UE_instance - - #local variable air_interface - air_interface = test.findtext('air_interface') - if (air_interface is None) or (air_interface.lower() not in ['nr','lte']): - CiTestObj.air_interface = 'lte-uesoftmodem' - elif (air_interface.lower() in ['nr','lte']): - CiTestObj.air_interface = air_interface.lower() +'-uesoftmodem' - else : - logging.error('OCP UE -- NOT SUPPORTED') - - CiTestObj.cmd_prefix = test.findtext('cmd_prefix') or "" - elif action == 'Terminate_OAI_UE': UE_instance=test.findtext('UE_instance') if (UE_instance is None): @@ -772,8 +753,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re CiTestObj.DataEnableUE(HTML) elif action == 'CheckStatusUE': CiTestObj.CheckStatusUE(HTML) - elif action == 'Initialize_OAI_UE': - CiTestObj.InitializeOAIUE(HTML,RAN,EPC,CONTAINERS) elif action == 'Terminate_OAI_UE': CiTestObj.TerminateOAIUE(HTML,RAN,EPC,CONTAINERS) elif action == 'Ping': diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml index 0b267d3a96..c7d51d256e 100755 --- a/ci-scripts/xml_class_list.yml +++ b/ci-scripts/xml_class_list.yml @@ -13,7 +13,6 @@ - Terminate_UE - Attach_UE - Detach_UE - - Initialize_OAI_UE - Terminate_OAI_UE - DataDisable_UE - DataEnable_UE From ec64826fdef2b9589bd3dbbd803d8b8dc6500395 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 17 Sep 2024 19:00:37 +0200 Subject: [PATCH 04/10] Remove unused Terminate_OAI_UE XML step: no XML uses this - Fix Jenkinsfile-tmp-full-ran: python test stage TerminateOAIUE() has been removed --- ci-scripts/Jenkinsfile-tmp-full-ran | 28 +-------------- ci-scripts/cls_oaicitest.py | 54 ----------------------------- ci-scripts/main.py | 22 ------------ ci-scripts/xml_class_list.yml | 1 - 4 files changed, 1 insertion(+), 104 deletions(-) diff --git a/ci-scripts/Jenkinsfile-tmp-full-ran b/ci-scripts/Jenkinsfile-tmp-full-ran index e55de8b57c..139ff65132 100644 --- a/ci-scripts/Jenkinsfile-tmp-full-ran +++ b/ci-scripts/Jenkinsfile-tmp-full-ran @@ -39,10 +39,8 @@ if (params.LockResources != null && params.LockResources.trim().length() > 0) // Terminate Status def termENB = 0 -def termOAIUE = 1 -def termStatusArray = new Boolean[termOAIUE + 1] +def termStatusArray = new Boolean[termENB + 1] termStatusArray[termENB] = false -termStatusArray[termOAIUE] = false // Global Parameters. Normally they should be populated when the master job // triggers the slave job with parameters @@ -241,23 +239,6 @@ pipeline { } } } - stage('Terminate OAI-UE') { - steps { - echo '\u2705 \u001B[32mTerminate OAI-UE\u001B[0m' - withCredentials([ - [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password'] - ]) { - sh "python3 ci-scripts/main.py --mode=TerminateOAIUE --UEIPAddress=${params.UE_IPAddress} --UEUserName=${UE_Username} --UEPassword=${UE_Password}" - } - } - post { - success { - script { - termStatusArray[termOAIUE] = true - } - } - } - } } } stage('Log Collection') { @@ -473,13 +454,6 @@ pipeline { sh "python3 ci-scripts/main.py --mode=TerminateeNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password}" } } - if (!termStatusArray[termOAIUE]) { - withCredentials([ - [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password'] - ]) { - sh "python3 ci-scripts/main.py --mode=TerminateOAIUE --UEIPAddress=${params.UE_IPAddress} --UEUserName=${UE_Username} --UEPassword=${UE_Password}" - } - } } } } diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 4e731caab3..f38b303656 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -873,60 +873,6 @@ class OaiCiTest(): messages = [f"UE {ue.getName()}: {log}" for (ue, log) in zip(ues, archive_info)] HTML.CreateHtmlTestRowQueue(f'N/A', 'OK', messages) - def TerminateOAIUE(self,HTML,RAN,EPC,CONTAINERS): - SSH = sshconnection.SSHConnection() - SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword) - SSH.command(f'cd {self.UESourceCodePath}/cmake_targets', '\$', 5) - SSH.command('ps -aux | grep --color=never softmodem | grep -v grep', '\$', 5) - result = re.search('-uesoftmodem', SSH.getBefore()) - if result is not None: - SSH.command(f'echo {self.UEPassword} | sudo -S killall --signal SIGINT -r .*-uesoftmodem || true', '\$', 5) - time.sleep(10) - SSH.command('ps -aux | grep --color=never softmodem | grep -v grep', '\$', 5) - result = re.search('-uesoftmodem', SSH.getBefore()) - if result is not None: - SSH.command(f'echo {self.UEPassword} | sudo -S killall --signal SIGKILL -r .*-uesoftmodem || true', '\$', 5) - time.sleep(5) - SSH.command(f'rm -f my-lte-uesoftmodem-run {self.UE_instance}.sh', '\$', 5) - SSH.close() - result = re.search('ue_', str(self.UELogFile)) - if result is not None: - copyin_res = SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword,f'{self.UESourceCodePath}/cmake_targets/{self.UELogFile}', '.') - if (copyin_res == -1): - logging.debug('\u001B[1;37;41m Could not copy UE logfile to analyze it! \u001B[0m') - HTML.htmlUEFailureMsg='Could not copy UE logfile to analyze it!' - HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE, 'UE') - self.UELogFile = '' - return - logging.debug('\u001B[1m Analyzing UE logfile \u001B[0m') - logStatus = self.AnalyzeLogFile_UE(self.UELogFile,HTML,RAN) - result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) - if result is not None: - ueAction = 'Sniffing' - else: - ueAction = 'Connection' - if (logStatus < 0): - logging.debug(f'\u001B[1m {ueAction} Failed \u001B[0m') - HTML.htmlUEFailureMsg='' + ueAction + ' Failed\n' + HTML.htmlUEFailureMsg - HTML.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE') - if self.air_interface == 'lte-uesoftmodem': - # In case of sniffing on commercial eNBs we have random results - # Not an error then - if (logStatus != CONST.OAI_UE_PROCESS_COULD_NOT_SYNC) or (ueAction != 'Sniffing'): - self.Initialize_OAI_UE_args = '' - self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) - else: - if (logStatus == CONST.OAI_UE_PROCESS_COULD_NOT_SYNC): - self.Initialize_OAI_UE_args = '' - self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) - else: - logging.debug(f'\u001B[1m {ueAction} Completed \u001B[0m') - HTML.htmlUEFailureMsg='' + ueAction + ' Completed\n' + HTML.htmlUEFailureMsg - HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) - self.UELogFile = '' - else: - HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) - def AutoTerminateUEandeNB(self,HTML,RAN,EPC,CONTAINERS): if (RAN.Initialize_eNB_args != ''): self.testCase_id = 'AUTO-KILL-RAN' diff --git a/ci-scripts/main.py b/ci-scripts/main.py index e63915af40..041ed655f7 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -225,20 +225,6 @@ def GetParametersFromXML(action): else: CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) - elif action == 'Terminate_OAI_UE': - UE_instance=test.findtext('UE_instance') - if (UE_instance is None): - CiTestObj.UE_instance = '0' - else: - CiTestObj.UE_instance = int(UE_instance) - - #local variable air_interface - air_interface = test.findtext('air_interface') - if (air_interface is None) or (air_interface.lower() not in ['nr','lte']): - CiTestObj.air_interface = 'lte-uesoftmodem' - else: - CiTestObj.air_interface = air_interface.lower() +'-uesoftmodem' - elif action == 'Ping': CiTestObj.ping_args = test.findtext('ping_args') CiTestObj.ping_packetloss_threshold = test.findtext('ping_packetloss_threshold') @@ -493,12 +479,6 @@ if re.match('^TerminateeNB$', mode, re.IGNORECASE): RAN.eNB_serverId[0]='0' RAN.eNBSourceCodePath='/tmp/' RAN.TerminateeNB(HTML, EPC) -elif re.match('^TerminateOAIUE$', mode, re.IGNORECASE): - if CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '': - HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') - signal.signal(signal.SIGUSR1, receive_signal) - CiTestObj.TerminateOAIUE(HTML,RAN,EPC,CONTAINERS) elif re.match('^TerminateHSS$', mode, re.IGNORECASE): if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) @@ -753,8 +733,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re CiTestObj.DataEnableUE(HTML) elif action == 'CheckStatusUE': CiTestObj.CheckStatusUE(HTML) - elif action == 'Terminate_OAI_UE': - CiTestObj.TerminateOAIUE(HTML,RAN,EPC,CONTAINERS) elif action == 'Ping': CiTestObj.Ping(HTML,RAN,EPC,CONTAINERS) elif action == 'Iperf': diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml index c7d51d256e..71c7cd52b0 100755 --- a/ci-scripts/xml_class_list.yml +++ b/ci-scripts/xml_class_list.yml @@ -13,7 +13,6 @@ - Terminate_UE - Attach_UE - Detach_UE - - Terminate_OAI_UE - DataDisable_UE - DataEnable_UE - CheckStatusUE From 6147a83f0b046fb94f971a73fb0c97203e3ea97b Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 17 Sep 2024 19:06:29 +0200 Subject: [PATCH 05/10] Remove unused Perform_X2_Handover XML step: no XML uses this --- ci-scripts/cls_oaicitest.py | 53 ----------------------------------- ci-scripts/main.py | 13 --------- ci-scripts/xml_class_list.yml | 1 - 3 files changed, 67 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index f38b303656..9cdc42bef8 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -263,10 +263,6 @@ class OaiCiTest(): self.UEDevicesOnCmd = [] self.UEDevicesRebootCmd = [] self.idle_sleep_time = 0 - self.x2_ho_options = 'network' - self.x2NbENBs = 0 - self.x2ENBBsIds = [] - self.x2ENBConnectedUEs = [] self.repeatCounts = [] self.finalStatus = False self.UEIPAddress = '' @@ -935,55 +931,6 @@ 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, EPC): - cmd = "curl --silent http://" + EPC.IPAddress + ":9999/stats | jq '.' > " + fileName - message = cmd + '\n' - logging.debug(cmd) - subprocess.run(cmd, shell=True) - if idx == 0: - cmd = "jq '.mac_stats | length' " + fileName - strNbEnbs = subprocess.check_output(cmd, shell=True, universal_newlines=True) - self.x2NbENBs = int(strNbEnbs.strip()) - cnt = 0 - while cnt < self.x2NbENBs: - cmd = "jq '.mac_stats[" + str(cnt) + "].bs_id' " + fileName - bs_id = subprocess.check_output(cmd, shell=True, universal_newlines=True) - self.x2ENBBsIds[idx].append(bs_id.strip()) - cmd = "jq '.mac_stats[" + str(cnt) + "].ue_mac_stats | length' " + fileName - stNbUEs = subprocess.check_output(cmd, shell=True, universal_newlines=True) - nbUEs = int(stNbUEs.strip()) - ueIdx = 0 - self.x2ENBConnectedUEs[idx].append([]) - while ueIdx < nbUEs: - cmd = "jq '.mac_stats[" + str(cnt) + "].ue_mac_stats[" + str(ueIdx) + "].rnti' " + fileName - rnti = subprocess.check_output(cmd, shell=True, universal_newlines=True) - self.x2ENBConnectedUEs[idx][cnt].append(rnti.strip()) - ueIdx += 1 - cnt += 1 - - cnt = 0 - while cnt < self.x2NbENBs: - msg = " -- eNB: " + str(self.x2ENBBsIds[idx][cnt]) + " is connected to " + str(len(self.x2ENBConnectedUEs[idx][cnt])) + " UE(s)" - logging.debug(msg) - message += msg + '\n' - ueIdx = 0 - while ueIdx < len(self.x2ENBConnectedUEs[idx][cnt]): - msg = " -- UE rnti: " + str(self.x2ENBConnectedUEs[idx][cnt][ueIdx]) - logging.debug(msg) - message += msg + '\n' - ueIdx += 1 - cnt += 1 - return message - - def Perform_X2_Handover(self,HTML,RAN,EPC): - html_queue = SimpleQueue() - fullMessage = '
'
-		msg = f'Doing X2 Handover w/ option {self.x2_ho_options}'
-		logging.debug(msg)
-		fullMessage += msg + '\n'
-		if self.x2_ho_options == 'network':
-			HTML.CreateHtmlTestRow('Cannot perform requested X2 Handover', 'KO', CONST.ALL_PROCESSES_OK)
-
 	def LogCollectBuild(self,RAN):
 		# Some pipelines are using "none" IP / Credentials
 		# In that case, just forget about it
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 041ed655f7..0e54401b7b 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -278,17 +278,6 @@ def GetParametersFromXML(action):
 		else:
 			CiTestObj.idle_sleep_time = int(string_field)
 
-	elif action == 'Perform_X2_Handover':
-		string_field = test.findtext('x2_ho_options')
-		if (string_field is None):
-			CiTestObj.x2_ho_options = 'network'
-		else:
-			if string_field != 'network':
-				logging.error('ERROR: test-case has wrong option ' + string_field)
-				CiTestObj.x2_ho_options = 'network'
-			else:
-				CiTestObj.x2_ho_options = string_field
-
 	elif action == 'Build_PhySim':
 		ldpc.buildargs  = test.findtext('physim_build_args')
 		forced_workspace_cleanup = test.findtext('forced_workspace_cleanup')
@@ -761,8 +750,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
 						EPC.UndeployEpc(HTML)
 					elif action == 'IdleSleep':
 						CiTestObj.IdleSleep(HTML)
-					elif action == 'Perform_X2_Handover':
-						CiTestObj.Perform_X2_Handover(HTML,RAN,EPC)
 					elif action == 'Build_PhySim':
 						HTML=ldpc.Build_PhySim(HTML,CONST)
 						if ldpc.exitStatus==1:
diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml
index 71c7cd52b0..34f63e8c2b 100755
--- a/ci-scripts/xml_class_list.yml
+++ b/ci-scripts/xml_class_list.yml
@@ -30,7 +30,6 @@
   - Initialize_5GCN
   - Terminate_5GCN
   - IdleSleep
-  - Perform_X2_Handover
   - Build_Image
   - Build_Run_Tests
   - Deploy_Object

From 3e2ee3878ee3933068ad26c5d6376ace1db1c259 Mon Sep 17 00:00:00 2001
From: Robert Schmidt 
Date: Wed, 18 Sep 2024 07:44:33 +0200
Subject: [PATCH 06/10] Remove unused python files

---
 ci-scripts/build_fr1_from_yaml.py  | 79 -------------------------
 ci-scripts/build_fr1_template.yaml | 40 -------------
 ci-scripts/cls_log_mgt.py          | 94 ------------------------------
 ci-scripts/cls_module.py           | 21 -------
 4 files changed, 234 deletions(-)
 delete mode 100755 ci-scripts/build_fr1_from_yaml.py
 delete mode 100755 ci-scripts/build_fr1_template.yaml
 delete mode 100644 ci-scripts/cls_log_mgt.py

diff --git a/ci-scripts/build_fr1_from_yaml.py b/ci-scripts/build_fr1_from_yaml.py
deleted file mode 100755
index 4687c3ee02..0000000000
--- a/ci-scripts/build_fr1_from_yaml.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Tue Jul  7 23:04:51 2020
-
-@author: hardy
-"""
-
-
-
-import yaml
-import sys
-import subprocess
-
-      
-
-def main():
-  f_yaml=sys.argv[1]
-  f_sh=sys.argv[2]
-  #filename='py_params_template.yaml'
-  with open(f_yaml,'r') as file:
-    # The FullLoader parameter handles the conversion from YAML
-    # scalar values to Python the dictionary format
-    print('Loading '+f_yaml)
-    params = yaml.load(file,Loader=yaml.FullLoader)
-
-
-  with open(f_sh,'w') as f:
-    f.write('#!/bin/sh\n')
-    for i in range (0, len(params['steps'])):
-      step=params['steps'][i].split(',')
-      mode=step[0]
-      f_xml=step[1]
-      line='python3 main.py ' + \
-           '--mode='+ mode + ' ' + \
-           '--ranRepository=' + params['ranRepository'] + ' ' + \
-           '--ranBranch=' + params['ranBranch'] + ' ' + \
-           '--ranCommitID=' + params['ranCommitID'] + ' ' + \
-           '--ranAllowMerge=' + params['ranAllowMerge'] + ' ' + \
-           '--ranTargetBranch=' + params['ranTargetBranch'] + ' ' + \
-           \
-           '--UEIPAddress=' + params['UE']['UEIPAddress'] + ' ' + \
-           '--UEUserName=' + params['UE']['UEUserName'] + ' ' + \
-           '--UEPassword=' + params['UE']['UEPassword'] + ' ' + \
-           '--UESourceCodePath=' + params['UE']['UESourceCodePath'] + ' ' + \
-           \
-           '--EPCIPAddress=' + params['EPC']['EPCIPAddress'] + ' ' + \
-           '--EPCUserName=' + params['EPC']['EPCUserName'] + ' ' + \
-           '--EPCPassword=' + params['EPC']['EPCPassword'] + ' ' + \
-           '--EPCSourceCodePath=' + params['EPC']['EPCSourceCodePath'] + ' ' + \
-           '--EPCType=' + params['EPC']['EPCType'] + ' ' + \
-           \
-           '--eNBIPAddress=' + params['RAN'][0]['eNBIPAddress'] + ' ' + \
-           '--eNBUserName=' + params['RAN'][0]['eNBUserName'] + ' ' + \
-           '--eNBPassword=' + params['RAN'][0]['eNBPassword'] + ' ' + \
-           '--eNBSourceCodePath=' + params['RAN'][0]['eNBSourceCodePath'] + ' ' + \
-           \
-           '--eNB1IPAddress=' + params['RAN'][1]['eNB1IPAddress'] + ' ' + \
-           '--eNB1UserName=' + params['RAN'][1]['eNB1UserName'] + ' ' + \
-           '--eNB1Password=' + params['RAN'][1]['eNB1Password'] + ' ' + \
-           '--eNB1SourceCodePath=' + params['RAN'][1]['eNB1SourceCodePath'] + ' '
-      if mode!="InitiateHtml":
-         line+='--XMLTestFile=' + f_xml
-      #if mode is InitiateHTML we have a special processing to mention all xml files from the list
-      #loop starting at 1 to avoid the xml file mentioned with InitiateHtml in yaml file (file is none)
-      else:
-         for i in range (1, len(params['steps'])):
-            step=params['steps'][i].split(',')
-            f_xml=step[1]
-            line+='--XMLTestFile=' + f_xml+' '
-      line+='\n'
-      print(line)
-      f.write(line)
-  subprocess.call(['chmod','777',f_sh])
-
-if __name__ == "__main__":
-    main()
-
-
diff --git a/ci-scripts/build_fr1_template.yaml b/ci-scripts/build_fr1_template.yaml
deleted file mode 100755
index bedeeb09d7..0000000000
--- a/ci-scripts/build_fr1_template.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-ranRepository : https://gitlab.eurecom.fr/oai/openairinterface5g.git
-ranBranch : integration_2021_wk13_a  
-ranCommitID : 104aa7eed5d6702c1b9da663414079ef698da206     
-ranAllowMerge : 'yes' 
-ranTargetBranch : develop
-
-steps:
-  - InitiateHtml,none
-  - TesteNB,xml_files/fr1_multi_node_build.xml
-  - TesteNB,xml_files/fr1_epc_start.xml
-  - TesteNB,xml_files/fr1_nsa_base_next.xml #ue toggle, nodes initialize, ue toggle, ping, nodes terminate
-  - TesteNB,xml_files/fr1_epc_closure.xml
-
-RAN:
-    - eNBIPAddress : 192.168.18.199 #eNB on Minimassive
-      eNBUserName : oaicicd
-      eNBPassword : HzB*nkryaITdVd08TKlT#2Z5a!7M#~qn
-      eNBSourceCodePath : /tmp/CI-FR1-eNB
-    - eNB1IPAddress : 192.168.18.198 #gNB on Mozart
-      eNB1UserName : oaicicd
-      eNB1Password : 7zkDOFgh@w3HvRBMPTMh@BAx
-      eNB1SourceCodePath : /tmp/CI-FR1-gNB
-
-
-EPC: #on Nikaia 
-  EPCIPAddress : 192.168.18.99
-  EPCUserName : nikaia
-  EPCPassword : linux
-  EPCSourceCodePath : /tmp/CI-FR1-EPC
-  EPCType : ltebox
-
-
-UE:
-  UEIPAddress : none
-  UEUserName : none
-  UEPassword : none
-  UESourceCodePath : none
-
-
diff --git a/ci-scripts/cls_log_mgt.py b/ci-scripts/cls_log_mgt.py
deleted file mode 100644
index a78eee5a33..0000000000
--- a/ci-scripts/cls_log_mgt.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
-# * contributor license agreements.  See the NOTICE file distributed with
-# * this work for additional information regarding copyright ownership.
-# * The OpenAirInterface Software Alliance licenses this file to You under
-# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
-# * except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *      http://www.openairinterface.org/?page_id=698
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-# *-------------------------------------------------------------------------------
-# * For more information about the OpenAirInterface (OAI) Software Alliance:
-# *      contact@openairinterface.org
-# */
-#---------------------------------------------------------------------
-#
-#   Required Python Version
-#     Python 3.x
-#
-#---------------------------------------------------------------------
-
-#USAGE: 
-#	log=Log_Mgt(Username,IPAddress,Password,Path)
-#	log.LogRotation()
-
-
-
-import logging
-import re
-import subprocess
-import sshconnection
-
-class Log_Mgt:
-
-	def __init__(self,Username, IPAddress,Password,Path):
-		self.Username=Username
-		self.IPAddress=IPAddress
-		self.Password=Password
-		self.path=Path
-
-#-----------------$
-#PRIVATE# Methods$
-#-----------------$
-
-
-	def __CheckUsedSpace(self):
-		HOST=self.Username+'@'+self.IPAddress
-		COMMAND="df "+ self.path
-		ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
-		result = ssh.stdout.readlines()
-		s=result[1].decode('utf-8').rstrip()#result[1] is the second line with the results we are looking for
-		used=s.split()[4] #get 4th field ex: 70%
-		m = re.match('^(\d+)\%',used)
-		if m is not None:
-			return int(m.group(1))
-
-	def __RemoveOldest(self, days):
-		mySSH = sshconnection.SSHConnection()
-		mySSH.open(self.IPAddress, self.Username, self.Password)
-		COMMAND='echo ' + self.Password + ' | sudo -S find ' + self.path + ' -type f -mtime +' +  str(days) + ' -delete'
-		mySSH.command(COMMAND,'\$',20)
-		mySSH.close()
-
-
-
-#-----------------$
-#PUBLIC Methods$
-#-----------------$
-
-
-	def LogRotation(self):
-		doLoop = True
-		nbDays = 14
-		while doLoop and nbDays > 1:
-			used_space = self.__CheckUsedSpace() #avail space in target folder
-			if used_space > 80 :
-				logging.debug('\u001B[1;37;41m  Used Disk (' + str(used_space) + '%) > 80%, on '  + self.Username+'@'+self.IPAddress + '\u001B[0m')
-				logging.debug('\u001B[1;37;41m  Removing Artifacts older than ' + str(nbDays) + ' days \u001B[0m')
-				self.__RemoveOldest(nbDays)
-				nbDays -= 1
-			else:
-				logging.debug('Used Disk (' + str(used_space) + '%) < 80%, on '  + self.Username+'@'+self.IPAddress +', no cleaning required')
-				doLoop = False
-
-
-			
-
-
-
diff --git a/ci-scripts/cls_module.py b/ci-scripts/cls_module.py
index c56638777c..f5539606a4 100644
--- a/ci-scripts/cls_module.py
+++ b/ci-scripts/cls_module.py
@@ -35,8 +35,6 @@ import subprocess
 from datetime import datetime
 import yaml
 
-#for log rotation mgt
-import cls_log_mgt
 import cls_cmd
 
 class Module_UE:
@@ -220,25 +218,6 @@ class Module_UE:
 
 	def _disableTrace(self):
 		raise Exception("not implemented")
-		mySSH = sshconnection.SSHConnection()
-		mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
-		mySSH.command('echo ' + ' '  + ' | sudo -S killall --signal=SIGINT *QLog*', '\$',5)
-		mySSH.close()
-
 
 	def _logCollect(self):
 		raise Exception("not implemented")
-		mySSH = sshconnection.SSHConnection()
-		mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
-		#archive qlog to USB stick in /media/usb-drive/ci_qlogs with datetime suffix
-		now=datetime.now()
-		now_string = now.strftime("%Y%m%d-%H%M")
-		source='ci_qlog'
-		destination= self.LogStore + '/ci_qlog_'+now_string+'.zip'
-		#qlog artifact is zipped into the target folder
-		mySSH.command('echo $USER; echo ' + ' '  + ' | nohup sudo -S zip -r '+destination+' '+source+' > /dev/null 2>&1 &','\$', 10)
-		mySSH.close()
-		#post action : log cleaning to make sure enough space is reserved for the next run
-		Log_Mgt=cls_log_mgt.Log_Mgt(self.HostUsername,self.HostIPAddress, self.HostPassword, self.LogStore)
-		return destination
-

From 4a9944bf06089fe331416c6bff47eaa3f21f11fa Mon Sep 17 00:00:00 2001
From: Robert Schmidt 
Date: Wed, 18 Sep 2024 07:48:57 +0200
Subject: [PATCH 07/10] Remove unused OaiCiTest class members

---
 ci-scripts/cls_oaicitest.py | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py
index 9cdc42bef8..7fdc467e03 100644
--- a/ci-scripts/cls_oaicitest.py
+++ b/ci-scripts/cls_oaicitest.py
@@ -254,24 +254,14 @@ class OaiCiTest():
 		self.iperf_profile = ''
 		self.iperf_options = ''
 		self.iperf_tcp_rate_target = ''
-		self.nbMaxUEtoAttach = -1
-		self.UEDevices = []
-		self.UEDevicesStatus = []
-		self.UEDevicesRemoteServer = []
-		self.UEDevicesRemoteUser = []
-		self.UEDevicesOffCmd = []
-		self.UEDevicesOnCmd = []
-		self.UEDevicesRebootCmd = []
 		self.idle_sleep_time = 0
 		self.repeatCounts = []
 		self.finalStatus = False
 		self.UEIPAddress = ''
 		self.UEUserName = ''
 		self.UEPassword = ''
-		self.UE_instance = 0
 		self.UESourceCodePath = ''
 		self.UELogFile = ''
-		self.clean_repository = True
 		self.air_interface=''
 		self.ue_ids = []
 		self.nodes = []

From de310c6e827a970fa30e3ef31799bcd8915d0ca3 Mon Sep 17 00:00:00 2001
From: Robert Schmidt 
Date: Wed, 18 Sep 2024 08:03:56 +0200
Subject: [PATCH 08/10] Remove unused CI Jenkinsfiles

As of now, these seem to be the Jenkinsfiles used on Jenkins

ci-scripts/Jenkinsfile-cluster
ci-scripts/Jenkinsfile-colosseum
ci-scripts/Jenkinsfile-GitLab-Container
ci-scripts/Jenkinsfile-GitLab-COTS-UE-Test
ci-scripts/Jenkinsfile-nrue
ci-scripts/Jenkinsfile-physim-deploy
ci-scripts/Jenkinsfile-push-registry
ci-scripts/Jenkinsfile-tmp-full-ran
ci-scripts/Jenkinsfile-tmp-multi-enb
ci-scripts/Jenkinsfile-tmp-multi-enb-nsa
ci-scripts/Jenkinsfile-tmp-ran

(gather all files in a file, then cat  | sort | uniq)

Remove all others.
---
 ci-scripts/Jenkinsfile-tmp-ue   | 266 --------------------------------
 ci-scripts/Jenkinsfile-trig-nsa | 160 -------------------
 2 files changed, 426 deletions(-)
 delete mode 100644 ci-scripts/Jenkinsfile-tmp-ue
 delete mode 100644 ci-scripts/Jenkinsfile-trig-nsa

diff --git a/ci-scripts/Jenkinsfile-tmp-ue b/ci-scripts/Jenkinsfile-tmp-ue
deleted file mode 100644
index dec4df9812..0000000000
--- a/ci-scripts/Jenkinsfile-tmp-ue
+++ /dev/null
@@ -1,266 +0,0 @@
-#!/bin/groovy
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-// Template Jenkins Declarative Pipeline script to run Test w/ RF HW
-
-// Location of the python executor node shall be in the same subnet as the others servers
-def pythonExecutor = params.pythonExecutor
-
-// Location of the test XML file to be run
-def testXMLFile = params.pythonTestXmlFile
-def mainPythonAllXmlFiles = ""
-def buildStageStatus = true
-
-// Name of the test stage
-def testStageName = params.pipelineTestStageName
-
-def lockResources = []
-if (params.LockResources != null && params.LockResources.trim().length() > 0)
-  params.LockResources.trim().split(",").each{lockResources += [resource: it.trim()]}
-
-// Terminate Status
-def termUE = 0
-def termENB = 1
-def termSPGW = 2
-def termMME = 3
-def termHSS = 4
-def termStatusArray = new Boolean[termHSS + 1]
-termStatusArray[termUE] = false
-termStatusArray[termENB] = false
-termStatusArray[termSPGW] = false
-termStatusArray[termMME] = false
-termStatusArray[termHSS] = false
-
-// Global Parameters. Normally they should be populated when the master job
-// triggers the slave job with parameters
-def eNB_Repository
-def eNB_Branch
-def eNB_CommitID
-def eNB_AllowMergeRequestProcess = false
-def eNB_TargetBranch
-
-pipeline {
-    agent {
-        label pythonExecutor
-    }
-    options {
-        ansiColor('xterm')
-        lock(extra: lockResources)
-    }
-    stages {
-        stage ("Verify Parameters") {
-            steps {
-                script {
-                    echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
-                    def allParametersPresent = true
-
-                    // It is already to late to check it
-                    if (params.pythonExecutor != null) {
-                        echo "eNB CI executor node  :   ${pythonExecutor}"
-                    }
-                    // If not present picking a default Stage Name
-                    if (params.pipelineTestStageName == null) {
-                        // picking default
-                        testStageName = 'Template Test Stage'
-                    }
-
-                    if (params.LockResources == null) {
-                      echo "no LockResources given"
-                      allParametersPresent = false
-                    }
-                    if (params.UE_IPAddress == null) {
-                        allParametersPresent = false
-                    }
-                    if (params.UE_SourceCodePath == null) {
-                        allParametersPresent = false
-                    }
-                    if (params.UE_Credentials == null) {
-                        allParametersPresent = false
-                    }
-                    // the following 4 parameters should be pushed by the master trigger
-                    // if not present, take the job GIT variables (used for developing)
-                    if (params.eNB_Repository == null) {
-                        eNB_Repository = env.GIT_URL
-                    } else {
-                        eNB_Repository = params.eNB_Repository
-                    }
-                    echo "eNB_Repository        :   ${eNB_Repository}"
-                    if (params.eNB_Branch == null) {
-                        eNB_Branch = env.GIT_BRANCH
-                    } else {
-                        eNB_Branch = params.eNB_Branch
-                    }
-                    echo "eNB_Branch            :   ${eNB_Branch}"
-                    if (params.eNB_CommitID == null) {
-                        eNB_CommitID = env.GIT_COMMIT
-                    } else {
-                        eNB_CommitID = params.eNB_CommitID
-                    }
-                    echo "eNB_CommitID          :   ${eNB_CommitID}"
-                    if (params.eNB_mergeRequest != null) {
-                        eNB_AllowMergeRequestProcess = params.eNB_mergeRequest
-                        if (eNB_AllowMergeRequestProcess) {
-                            if (params.eNB_TargetBranch != null) {
-                                eNB_TargetBranch = params.eNB_TargetBranch
-                            } else {
-                                eNB_TargetBranch = 'develop'
-                            }
-                            echo "eNB_TargetBranch      :   ${eNB_TargetBranch}"
-                        }
-                    }
-/*
-                    if (params.EPC_IPAddress == null) {
-                        allParametersPresent = false
-                    }
-                    if (params.EPC_Type == null) {
-                        allParametersPresent = false
-                    }
-                    if (params.EPC_SourceCodePath == null) {
-                        allParametersPresent = false
-                    }
-                    if (params.EPC_Credentials == null) {
-                        allParametersPresent = false
-                    }
-*/
-                    if (allParametersPresent) {
-                        echo "All parameters are present"
-                        if (eNB_AllowMergeRequestProcess) {
-                            sh "git fetch"
-                            sh "./ci-scripts/doGitLabMerge.sh --src-branch ${eNB_Branch} --src-commit ${eNB_CommitID} --target-branch ${eNB_TargetBranch} --target-commit latest"
-                        } else {
-                            sh "git fetch"
-                            sh "git checkout -f ${eNB_CommitID}"
-                        }
-                    } else {
-                        echo "Some parameters are missing"
-                        sh "./ci-scripts/fail.sh"
-                    }
-                }
-            }
-        }
-        stage ("Build and Test") {
-            steps {
-                script {
-                    dir ('ci-scripts') {
-                        echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
-                        // If not present picking a default XML file
-                        if (params.pythonTestXmlFile == null) {
-                            // picking default
-                            testXMLFile = 'xml_files/ue_band20_build.xml'
-                            echo "Test XML file(default):   ${testXMLFile}"
-                            mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
-                        } else {
-                            String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
-                            for (xmlFile in myXmlTestSuite) {
-                                if (fileExists(xmlFile)) {
-                                    mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
-                                    echo "Test XML file         :   ${xmlFile}"
-                                }
-                            }
-                        }
-                        withCredentials([
-                            [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password'],
-                        ]) {
-                            sh "python3 main.py --mode=InitiateHtml --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} ${mainPythonAllXmlFiles}"
-                            String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
-                            for (xmlFile in myXmlTestSuite) {
-                            if (fileExists(xmlFile)) {
-                                try {
-                                  timeout (time: 60, unit: 'MINUTES') {
-                                    sh "python3 main.py --mode=TestUE --UEIPAddress=${params.UE_IPAddress} --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --UEUserName=${UE_Username} --UEPassword=${UE_Password} --UESourceCodePath=${params.UE_SourceCodePath} --XMLTestFile=${xmlFile}"
-                                  }
-                                } catch (Exception e) {
-                                    currentBuild.result = 'FAILURE'
-                                    buildStageStatus = false
-                                }
-                            }
-                            }
-                            sh "python3 main.py --mode=FinalizeHtml --finalStatus=${buildStageStatus} --UEIPAddress=${params.UE_IPAddress} --UEUserName=${UE_Username} --UEPassword=${UE_Password}"
-                        }
-                    }
-                }
-            }
-        }
-        stage('Log Collection') {
-            parallel {
-                stage('Log Collection (OAI UE - Build)') {
-                    steps {
-                        echo '\u2705 \u001B[32mLog Collection (OAI UE - Build)\u001B[0m'
-                        withCredentials([
-                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password']
-                        ]) {
-                            sh "python3 ci-scripts/main.py --mode=LogCollectBuild --UEIPAddress=${params.UE_IPAddress} --UEUserName=${UE_Username} --UEPassword=${UE_Password} --UESourceCodePath=${params.UE_SourceCodePath}"
-
-                            echo '\u2705 \u001B[32mLog Transfer (UE - Build)\u001B[0m'
-                            sh "sshpass -p \'${UE_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${UE_Username}@${params.UE_IPAddress}:${UE_SourceCodePath}/cmake_targets/build.log.zip ./build.log.${env.BUILD_ID}.zip || true"
-                        }
-                        script {
-                            if(fileExists("build.log.${env.BUILD_ID}.zip")) {
-                                archiveArtifacts "build.log.${env.BUILD_ID}.zip"
-                            }
-                        }
-                    }
-                }
-                stage('Log Collection (OAI UE - Run)') {
-                    steps {
-                        echo '\u2705 \u001B[32mLog Collection (OAI UE - Run)\u001B[0m'
-                        withCredentials([
-                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password']
-                        ]) {
-                            sh "python3 ci-scripts/main.py --mode=LogCollectOAIUE --UEIPAddress=${params.UE_IPAddress} --UEUserName=${UE_Username} --UEPassword=${UE_Password} --UESourceCodePath=${params.UE_SourceCodePath}"
-
-                            echo '\u2705 \u001B[32mLog Transfer (UE - Run)\u001B[0m'
-                            sh "sshpass -p \'${UE_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${UE_Username}@${params.UE_IPAddress}:${UE_SourceCodePath}/cmake_targets/ue.log.zip ./ue.log.${env.BUILD_ID}.zip || true"
-                        }
-                        script {
-                            if(fileExists("ue.log.${env.BUILD_ID}.zip")) {
-                                archiveArtifacts "ue.log.${env.BUILD_ID}.zip"
-                            }
-                            if(fileExists("ci-scripts/test_results.html")) {
-                                sh "mv ci-scripts/test_results.html test_results-${JOB_NAME}.html"
-                                sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's@build #TEMPLATE_BUILD_ID@build #${BUILD_ID}@' -e 's#Build-ID: TEMPLATE_BUILD_ID#Build-ID: ${BUILD_ID}#' -e 's#TEMPLATE_STAGE_NAME#${testStageName}#' test_results-${JOB_NAME}.html"
-                                archiveArtifacts "test_results-${JOB_NAME}.html"
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    post {
-        always {
-            script {
-                if (params.pipelineZipsConsoleLog != null) {
-                    if (params.pipelineZipsConsoleLog) {
-                        echo "Archiving Jenkins console log"
-                        sh "wget --no-check-certificate --no-proxy ${env.JENKINS_URL}/job/${env.JOB_NAME}/${env.BUILD_ID}/consoleText -O consoleText.log || true"
-                        sh "zip -m consoleText.log.${env.BUILD_ID}.zip consoleText.log || true"
-                        if(fileExists("consoleText.log.${env.BUILD_ID}.zip")) {
-                            archiveArtifacts "consoleText.log.${env.BUILD_ID}.zip"
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/ci-scripts/Jenkinsfile-trig-nsa b/ci-scripts/Jenkinsfile-trig-nsa
deleted file mode 100644
index 8e81b75e58..0000000000
--- a/ci-scripts/Jenkinsfile-trig-nsa
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/bin/groovy
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-// necessary for reading JSON
-import groovy.json.JsonSlurper
-
-// Template Jenkins Declarative Pipeline script to run Test w/ RF HW
-
-// Location of the python executor node shall be in the same subnet as the others servers
-def pythonExecutor = params.pythonExecutor
-
-def TARGET_BRANCH = "develop"
-def ALLOW_MERGE = true
-def GitPostArgs = ''
-def jobStatus
-
-pipeline {
-    agent {
-        label pythonExecutor
-    }
-    stages {
-        stage ("Launcher") {
-            steps {
-                script {
-                    // retrieve MR that are opened nd with tag NSA
-                    MR_LIST = sh returnStdout: true, script: 'curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests?state=opened&per_page=100&labels=NSA" | jq -cj "[.[].iid]"'
-                    echo "List of selected MRs: ${MR_LIST.trim()}"
-                    def MR_ARRAY = new JsonSlurper().parseText(MR_LIST.trim())
-                    // for every selected MR, retrieve the branch name and the latest commit
-                    for (MR in MR_ARRAY) {
-                        SRC_BRANCH=sh returnStdout: true, script: """curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests/${MR}" | jq ".source_branch" || true """
-                        SRC_BRANCH=SRC_BRANCH.trim()
-                        COMMIT_ID=sh returnStdout: true, script:  """curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests/${MR}" | jq ".sha" || true """
-                        COMMIT_ID=COMMIT_ID.trim()
-                        echo "Testing NSA on : ${MR} ${SRC_BRANCH} ${COMMIT_ID}"
-                        commit = COMMIT_ID.replace("\"","")
-                        GitPostArgs = MR + ' ' + commit + ' '
-                        echo GitPostArgs
-
-                        //calling LTE 2x2
-                        jobName = "RAN-LTE-2x2-Module-OAIEPC"
-                        jobStatus =  build job: jobName, wait : true, propagate : false, parameters: [
-                            string(name: 'eNB_MR', value: String.valueOf(MR)),
-                            string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
-                            string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
-                            string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
-                            booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
-                        ]
-                        jobResult = jobStatus.getResult()
-                        build_url = jobStatus.getAbsoluteUrl()
-                        build_id = jobStatus.getNumber().toString()
-                        GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
-                        echo GitPostArgs
-
-                        //calling NSA B200
-                        jobName = "RAN-NSA-B200-Module-LTEBOX"
-                        jobStatus =  build job: jobName, wait : true, propagate : false, parameters: [
-                            string(name: 'eNB_MR', value: String.valueOf(MR)),
-                            string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
-                            string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
-                            string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
-                            booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
-                        ]
-                        jobResult = jobStatus.getResult()
-                        build_url = jobStatus.getAbsoluteUrl()
-                        build_id = jobStatus.getNumber().toString()
-                        GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
-                        echo GitPostArgs
-
-                        //calling NSA 2x2
-                        jobName = "RAN-NSA-2x2-Module-OAIEPC"
-                        jobStatus =  build job: jobName, wait : true, propagate : false, parameters: [
-                            string(name: 'eNB_MR', value: String.valueOf(MR)),
-                            string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
-                            string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
-                            string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
-                            booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
-                        ]
-                        jobResult = jobStatus.getResult()
-                        build_url = jobStatus.getAbsoluteUrl()
-                        build_id = jobStatus.getNumber().toString()
-                        GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
-                        echo GitPostArgs
-
-                        //calling SA 
-                        jobName = "RAN-SA-Module-CN5G"
-                        jobStatus =  build job: jobName, wait : true, propagate : false, parameters: [
-                            string(name: 'eNB_MR', value: String.valueOf(MR)),
-                            string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
-                            string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
-                            string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
-                            booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
-                        ]
-                        jobResult = jobStatus.getResult()
-                        build_url = jobStatus.getAbsoluteUrl()
-                        build_id = jobStatus.getNumber().toString()
-                        GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
-                        echo GitPostArgs
-
-                        //calling SA-AmariS
-                        jobName = "RAN-SA-AmariS-CN5G"
-                        jobStatus =  build job: jobName, wait : true, propagate : false, parameters: [
-                            string(name: 'eNB_MR', value: String.valueOf(MR)),
-                            string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
-                            string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
-                            string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
-                            booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
-                        ]
-                        jobResult = jobStatus.getResult()
-                        build_url = jobStatus.getAbsoluteUrl()
-                        build_id = jobStatus.getNumber().toString()
-                        GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
-                        echo GitPostArgs
-
-                        //calling OAIUE N310-X300
-                        jobName = "RAN-SA-OAIUE-N310-X300-CN5G"
-                        jobStatus =  build job: jobName, wait : true, propagate : false, parameters: [
-                            string(name: 'eNB_MR', value: String.valueOf(MR)),
-                            string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
-                            string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
-                            string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
-                            booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
-                        ]
-                        jobResult = jobStatus.getResult()
-                        build_url = jobStatus.getAbsoluteUrl()
-                        build_id = jobStatus.getNumber().toString()
-                        GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
-                        echo GitPostArgs
-
-                        //git report the test results in 1 block, at the end of the test sequence of one MR
-                        dir ('ci-scripts/ran_dashboard') {
-                            sh "python3 Hdashboard.py gitpost ${GitPostArgs}"
-                        }                        
-                    }
-                }                                  
-            }   
-        }
-    }
-}
-
-

From 40bde2ae757ee83b23fad55c34eed6951e18d304 Mon Sep 17 00:00:00 2001
From: Robert Schmidt 
Date: Wed, 18 Sep 2024 08:05:57 +0200
Subject: [PATCH 09/10] Jenkinsfiles: Print if an XML file is not present

---
 ci-scripts/Jenkinsfile-cluster           | 2 ++
 ci-scripts/Jenkinsfile-nrue              | 2 ++
 ci-scripts/Jenkinsfile-physim-deploy     | 2 ++
 ci-scripts/Jenkinsfile-tmp-full-ran      | 2 ++
 ci-scripts/Jenkinsfile-tmp-multi-enb     | 2 ++
 ci-scripts/Jenkinsfile-tmp-multi-enb-nsa | 2 ++
 ci-scripts/Jenkinsfile-tmp-ran           | 2 ++
 7 files changed, 14 insertions(+)

diff --git a/ci-scripts/Jenkinsfile-cluster b/ci-scripts/Jenkinsfile-cluster
index 40e54a9839..69c72eebfa 100644
--- a/ci-scripts/Jenkinsfile-cluster
+++ b/ci-scripts/Jenkinsfile-cluster
@@ -200,6 +200,8 @@ pipeline {
               if (fileExists(xmlFile)) {
                 mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                 echo "Test XML file         :   ${xmlFile}"
+              } else {
+                echo "Test XML file ${xmlFile}: no such file"
               }
             }
             withCredentials([
diff --git a/ci-scripts/Jenkinsfile-nrue b/ci-scripts/Jenkinsfile-nrue
index e183a47b3e..2a8f21483a 100644
--- a/ci-scripts/Jenkinsfile-nrue
+++ b/ci-scripts/Jenkinsfile-nrue
@@ -193,6 +193,8 @@ pipeline {
                 if (fileExists(xmlFile)) {
                   mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                   echo "Test XML file         :   ${xmlFile}"
+                } else {
+                  echo "Test XML file ${xmlFile}: no such file"
                 }
               }
             }
diff --git a/ci-scripts/Jenkinsfile-physim-deploy b/ci-scripts/Jenkinsfile-physim-deploy
index 163a5f58bb..23398d6d8e 100644
--- a/ci-scripts/Jenkinsfile-physim-deploy
+++ b/ci-scripts/Jenkinsfile-physim-deploy
@@ -186,6 +186,8 @@ pipeline {
                 if (fileExists(xmlFile)) {
                   mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                   echo "Test XML file         :   ${xmlFile}"
+                } else {
+                  echo "Test XML file ${xmlFile}: no such file"
                 }
               }
             }
diff --git a/ci-scripts/Jenkinsfile-tmp-full-ran b/ci-scripts/Jenkinsfile-tmp-full-ran
index 139ff65132..c1ed3e6b0e 100644
--- a/ci-scripts/Jenkinsfile-tmp-full-ran
+++ b/ci-scripts/Jenkinsfile-tmp-full-ran
@@ -192,6 +192,8 @@ pipeline {
                                 if (fileExists(xmlFile)) {
                                     mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                                     echo "Test XML file         :   ${xmlFile}"
+                                } else {
+                                    echo "Test XML file ${xmlFile}: no such file"
                                 }
                             }
                         }
diff --git a/ci-scripts/Jenkinsfile-tmp-multi-enb b/ci-scripts/Jenkinsfile-tmp-multi-enb
index 74b04a5cb9..778c32ecb1 100644
--- a/ci-scripts/Jenkinsfile-tmp-multi-enb
+++ b/ci-scripts/Jenkinsfile-tmp-multi-enb
@@ -189,6 +189,8 @@ pipeline {
                                 if (fileExists(xmlFile)) {
                                     mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                                     echo "Test XML file         :   ${xmlFile}"
+                                } else {
+                                    echo "Test XML file ${xmlFile}: no such file"
                                 }
                             }
                         }
diff --git a/ci-scripts/Jenkinsfile-tmp-multi-enb-nsa b/ci-scripts/Jenkinsfile-tmp-multi-enb-nsa
index 50b7105a92..4ee2cf9b0e 100644
--- a/ci-scripts/Jenkinsfile-tmp-multi-enb-nsa
+++ b/ci-scripts/Jenkinsfile-tmp-multi-enb-nsa
@@ -200,6 +200,8 @@ pipeline {
                 if (fileExists(xmlFile)) {
                   mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                   echo "Test XML file     :   ${xmlFile}"
+                } else {
+                  echo "Test XML file ${xmlFile}: no such file"
                 }
               }
             }
diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran
index cf9dce5e09..e1593d52a4 100644
--- a/ci-scripts/Jenkinsfile-tmp-ran
+++ b/ci-scripts/Jenkinsfile-tmp-ran
@@ -181,6 +181,8 @@ pipeline {
                                 if (fileExists(xmlFile)) {
                                     mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
                                     echo "Test XML file         :   ${xmlFile}"
+                                } else {
+                                    echo "Test XML file ${xmlFile}: no such file"
                                 }
                             }
                         }

From ec2afa22b1c1c4ce883d1fe6fe51380a28914680 Mon Sep 17 00:00:00 2001
From: Robert Schmidt 
Date: Wed, 18 Sep 2024 15:05:36 +0200
Subject: [PATCH 10/10] Fix: egrep is obsolescent, use grep -E

See e.g., egrep(1) [https://linux.die.net/man/1/egrep]:

> two variant programs egrep and fgrep are available. egrep is the same
> as grep -E. fgrep is the same as grep -F. Direct invocation as either
> egrep or fgrep is deprecated

See also the rationale of the POSIX description of grep
(https://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html):

> This grep has been enhanced in an upwards-compatible way to provide
> the exact functionality of the historical egrep and fgrep commands as
> well. It was the clear intention of the standard developers to
> consolidate the three greps into a single command.

Closes: #839
---
 ci-scripts/checkAddedWarnings.sh              |  4 +--
 ci-scripts/checkCodingFormattingRules.sh      | 32 +++++++++----------
 ci-scripts/cls_physim1.py                     |  2 +-
 ci-scripts/doGitLabMerge.sh                   |  4 +--
 ci-scripts/docker/Dockerfile.cppcheck.xenial  |  4 +--
 ci-scripts/epc.py                             |  4 +--
 ci-scripts/ran.py                             |  2 +-
 .../4g_rfsimulator_fdd_05MHz/entrypoint.sh    |  2 +-
 .../yaml_files/fr1_epc_20897/entrypoint.sh    |  2 +-
 .../yaml_files/magma_lte_20892/entrypoint.sh  |  2 +-
 .../yaml_files/magma_nsa_20897/entrypoint.sh  |  2 +-
 cmake_targets/tools/build_helper              |  6 ++--
 docker/Dockerfile.build.ubuntu22.cross-arm64  |  4 +--
 openair1/PHY/TOOLS/Makefile                   |  2 +-
 14 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/ci-scripts/checkAddedWarnings.sh b/ci-scripts/checkAddedWarnings.sh
index 3c51a5717f..3d6c80be9e 100755
--- a/ci-scripts/checkAddedWarnings.sh
+++ b/ci-scripts/checkAddedWarnings.sh
@@ -106,11 +106,11 @@ echo "Merged Commit is    : $MERGE_COMMMIT"
 echo "Target Init   is    : $TARGET_INIT_COMMIT"
 
 # Retrieve the list of modified files since the latest develop commit
-MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
+MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | grep -E "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
 NB_WARNINGS_FILES=0
 
 # Retrieve list of warnings 
-LIST_WARNING_FILES=`egrep "error:|warning:" archives/*/*.txt | egrep -v "jobserver unavailable|Clock skew detected." | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq`
+LIST_WARNING_FILES=`grep -E "error:|warning:" archives/*/*.txt | grep -E -v "jobserver unavailable|Clock skew detected." | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq`
 
 echo ""
 echo "List of files that have been modified by the Merge Request AND"
diff --git a/ci-scripts/checkCodingFormattingRules.sh b/ci-scripts/checkCodingFormattingRules.sh
index bd6b93ab84..b454ed4e91 100755
--- a/ci-scripts/checkCodingFormattingRules.sh
+++ b/ci-scripts/checkCodingFormattingRules.sh
@@ -64,18 +64,18 @@ then
     awk '/#[ \t]*ifndef/ { gsub("^.*ifndef *",""); if (names[$1]!="") print "files with same {define ", FILENAME, names[$1]; names[$1]=FILENAME } /#[ \t]*define/ { gsub("^.*define *",""); if(names[$1]!=FILENAME) print "error in declaration", FILENAME, $1, names[$1]; nextfile }' `find openair* common targets executables -name *.h |grep -v LFDS` > header-files-w-incorrect-define.txt
 
     # Testing if explicit GNU GPL license banner
-    egrep -irl --exclude-dir=.git --include=*.cpp --include=*.c --include=*.h "General Public License" . | egrep -v "openair3/NAS/COMMON/milenage.h" > files-w-gnu-gpl-license-banner.txt
+    grep -E -irl --exclude-dir=.git --include=*.cpp --include=*.c --include=*.h "General Public License" . | grep -E -v "openair3/NAS/COMMON/milenage.h" > files-w-gnu-gpl-license-banner.txt
 
     # Looking at exotic/suspect banner
-    LIST_OF_FILES_W_BANNER=`egrep -irl --exclude-dir=.git --include=*.cpp --include=*.c --include=*.h "Copyright|copyleft" .`
+    LIST_OF_FILES_W_BANNER=`grep -E -irl --exclude-dir=.git --include=*.cpp --include=*.c --include=*.h "Copyright|copyleft" .`
     if [ -f ./files-w-suspect-banner.txt ]; then rm -f ./files-w-suspect-banner.txt; fi
     for FILE in $LIST_OF_FILES_W_BANNER
     do
-       IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
-       IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE || true`
-       IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FILE || true`
-       IS_MIT_LICENCE_PRESENT=`egrep -c "MIT License" $FILE || true`
-       IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
+       IS_NFAPI=`echo $FILE | grep -E -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
+       IS_OAI_LICENCE_PRESENT=`grep -E -c "OAI Public License" $FILE || true`
+       IS_BSD_LICENCE_PRESENT=`grep -E -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FILE || true`
+       IS_MIT_LICENCE_PRESENT=`grep -E -c "MIT License" $FILE || true`
+       IS_EXCEPTION=`echo $FILE | grep -E -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
        if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] && [ $IS_MIT_LICENCE_PRESENT -eq 0 ]
        then
            if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
@@ -147,7 +147,7 @@ echo " ----------------------------------------------------------"
 echo ""
 
 # Retrieve the list of modified files since the latest develop commit
-MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
+MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | grep -E "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
 NB_TO_FORMAT=0
 if [ -f header-files-w-incorrect-define.txt ]
 then
@@ -173,20 +173,20 @@ do
     if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
     then
         # Testing if explicit GNU GPL license banner
-        GNU_EXCEPTION=`echo $FULLFILE | egrep -c "openair3/NAS/COMMON/milenage.h" || true`
+        GNU_EXCEPTION=`echo $FULLFILE | grep -E -c "openair3/NAS/COMMON/milenage.h" || true`
         if [ $GNU_EXCEPTION -eq 0 ]
         then
-            egrep -il "General Public License" $FULLFILE >> files-w-gnu-gpl-license-banner.txt
+            grep -E -il "General Public License" $FULLFILE >> files-w-gnu-gpl-license-banner.txt
         fi
         # Looking at exotic/suspect banner
-        IS_BANNER=`egrep -i -c "Copyright|copyleft" $FULLFILE || true`
+        IS_BANNER=`grep -E -i -c "Copyright|copyleft" $FULLFILE || true`
         if [ $IS_BANNER -ne 0 ]
         then
-            IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
-            IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE || true`
-            IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FULLFILE || true`
-            IS_MIT_LICENCE_PRESENT=`egrep -c "MIT License" $FULLFILE || true`
-            IS_EXCEPTION=`echo $FULLFILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
+            IS_NFAPI=`echo $FULLFILE | grep -E -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
+            IS_OAI_LICENCE_PRESENT=`grep -E -c "OAI Public License" $FULLFILE || true`
+            IS_BSD_LICENCE_PRESENT=`grep -E -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FULLFILE || true`
+            IS_MIT_LICENCE_PRESENT=`grep -E -c "MIT License" $FULLFILE || true`
+            IS_EXCEPTION=`echo $FULLFILE | grep -E -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
             if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] && [ $IS_MIT_LICENCE_PRESENT -eq 0 ]
             then
                 if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
diff --git a/ci-scripts/cls_physim1.py b/ci-scripts/cls_physim1.py
index 85d8520a5f..1888e00068 100644
--- a/ci-scripts/cls_physim1.py
+++ b/ci-scripts/cls_physim1.py
@@ -214,7 +214,7 @@ class PhySim:
 		mySSH.command('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc describe pod $pod >> cmake_targets/log/physim_pods_summary.txt; done', '\$', 10)
 		mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/log/physim_test.txt', '.')
 		try:
-			listLogFiles =  subprocess.check_output('egrep --colour=never "Execution Log file|Linux oai-" physim_test.txt', shell=True, universal_newlines=True)
+			listLogFiles =  subprocess.check_output('grep -E --colour=never "Execution Log file|Linux oai-" physim_test.txt', shell=True, universal_newlines=True)
 			for line in listLogFiles.split('\n'):
 				res1 = re.search('Linux (?Poai-[a-zA-Z0-9\-]+) ', str(line))
 				res2 = re.search('Execution Log file = (?P[a-zA-Z0-9\-\/\.\_\+]+)', str(line))
diff --git a/ci-scripts/doGitLabMerge.sh b/ci-scripts/doGitLabMerge.sh
index c0d6121314..15c3f34855 100755
--- a/ci-scripts/doGitLabMerge.sh
+++ b/ci-scripts/doGitLabMerge.sh
@@ -126,7 +126,7 @@ git config user.email "jenkins@openairinterface.org"
 git config user.name "OAI Jenkins"
 
 git checkout -f $SOURCE_COMMIT_ID > checkout.txt 2>&1
-STATUS=`egrep -c "fatal: reference is not a tree" checkout.txt`
+STATUS=`grep -E -c "fatal: reference is not a tree" checkout.txt`
 rm -f checkout.txt
 if [ $STATUS -ne 0 ]
 then
@@ -137,7 +137,7 @@ fi
 
 git merge --ff $TARGET_COMMIT_ID -m "Temporary merge for CI"
 
-STATUS=`git status | egrep -c "You have unmerged paths.|fix conflicts"`
+STATUS=`git status | grep -E -c "You have unmerged paths.|fix conflicts"`
 if [ $STATUS -ne 0 ]
 then
     echo "There are merge conflicts.. Cannot perform further build tasks"
diff --git a/ci-scripts/docker/Dockerfile.cppcheck.xenial b/ci-scripts/docker/Dockerfile.cppcheck.xenial
index 0d6aa029ff..5a61532346 100644
--- a/ci-scripts/docker/Dockerfile.cppcheck.xenial
+++ b/ci-scripts/docker/Dockerfile.cppcheck.xenial
@@ -52,8 +52,8 @@ RUN mkdir -p cmake_targets/log && \
         -I openair3/NAS/COMMON/UTIL \
         -j`nproc` . 2> cmake_targets/log/cppcheck.xml 1> cmake_targets/log/cppcheck_build.txt
 
-RUN egrep -c 'severity="error' cmake_targets/log/cppcheck.xml
+RUN grep -E -c 'severity="error' cmake_targets/log/cppcheck.xml
 
-RUN egrep -c 'severity="warning' cmake_targets/log/cppcheck.xml
+RUN grep -E -c 'severity="warning' cmake_targets/log/cppcheck.xml
 
 RUN cat cmake_targets/log/cppcheck.xml
diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py
index e073282635..b03573685a 100644
--- a/ci-scripts/epc.py
+++ b/ci-scripts/epc.py
@@ -568,7 +568,7 @@ class EPCManagement():
 			mySSH.command('python3 ./core-network.py '+self.cfgUnDeploy, '\$', 60)
 			mySSH.command('docker volume prune --force || true', '\$', 60)
 			time.sleep(2)
-			mySSH.command('tshark -r /tmp/oai-cn5g-v1.5.pcap | egrep --colour=never "Tracking area update" ','\$', 30)
+			mySSH.command('tshark -r /tmp/oai-cn5g-v1.5.pcap | grep -E --colour=never "Tracking area update" ','\$', 30)
 			result = re.search('Tracking area update request', mySSH.getBefore())
 			if result is not None:
 				message = 'UE requested ' + str(mySSH.getBefore().count('Tracking area update request')) + 'Tracking area update request(s)'
@@ -769,7 +769,7 @@ class EPCManagement():
 			mySSH.command('docker cp prod-magma-mme:/tmp/mme_check_run.pcap mme_' + self.testCase_id + '.pcap', '\$', 60)
 		else:
 			mySSH.command('docker cp prod-oai-mme:/tmp/mme_check_run.pcap mme_' + self.testCase_id + '.pcap', '\$', 60)
-		mySSH.command('tshark -r mme_' + self.testCase_id + '.pcap | egrep --colour=never "Tracking area update"', '\$', 60)
+		mySSH.command('tshark -r mme_' + self.testCase_id + '.pcap | grep -E --colour=never "Tracking area update"', '\$', 60)
 		result = re.search('Tracking area update request', mySSH.getBefore())
 		if result is not None:
 			message = 'UE requested ' + str(mySSH.getBefore().count('Tracking area update request')) + 'Tracking area update request(s)'
diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py
index 031de4b70e..ad1b2bc5e4 100644
--- a/ci-scripts/ran.py
+++ b/ci-scripts/ran.py
@@ -512,7 +512,7 @@ class RANManagement():
 				self.prematureExit = True
 				return
 			else:
-				mySSH.command('stdbuf -o0 cat enb_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync|Starting|Started"', '\$', 4)
+				mySSH.command('stdbuf -o0 cat enb_' + self.testCase_id + '.log | grep -E --text --color=never -i "wait|sync|Starting|Started"', '\$', 4)
 				if rruCheck:
 					result = re.search('wait RUs', mySSH.getBefore())
 				else:
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/entrypoint.sh b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/entrypoint.sh
index 24960e215d..586143cd2a 100755
--- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/entrypoint.sh
+++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/entrypoint.sh
@@ -19,7 +19,7 @@ MME_CONF[@HSS_IP_ADDR@]="192.168.61.2"
 cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
 
 for K in "${!MME_CONF[@]}"; do 
-  egrep -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
+  grep -E -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
   ret=$?;[[ ret -ne 0 ]] && echo "Could not replace $K with ${MME_CONF[$K]}"
 done
 
diff --git a/ci-scripts/yaml_files/fr1_epc_20897/entrypoint.sh b/ci-scripts/yaml_files/fr1_epc_20897/entrypoint.sh
index 27c6c401a6..3655a74fc2 100755
--- a/ci-scripts/yaml_files/fr1_epc_20897/entrypoint.sh
+++ b/ci-scripts/yaml_files/fr1_epc_20897/entrypoint.sh
@@ -11,7 +11,7 @@ then
     ifconfig ${MME_INTERFACE_NAME_FOR_S10} ${MME_IPV4_ADDRESS_FOR_S10} up
 fi
 
-LIST_OF_NETWORKS=`ifconfig -s | egrep -v "^Iface|^lo" | cut -d' ' -f1`
+LIST_OF_NETWORKS=`ifconfig -s | grep -E -v "^Iface|^lo" | cut -d' ' -f1`
 
 for if_name in $LIST_OF_NETWORKS
 do
diff --git a/ci-scripts/yaml_files/magma_lte_20892/entrypoint.sh b/ci-scripts/yaml_files/magma_lte_20892/entrypoint.sh
index 859ff7d98f..3095860169 100755
--- a/ci-scripts/yaml_files/magma_lte_20892/entrypoint.sh
+++ b/ci-scripts/yaml_files/magma_lte_20892/entrypoint.sh
@@ -19,7 +19,7 @@ MME_CONF[@HSS_IP_ADDR@]="192.168.61.194"
 cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
 
 for K in "${!MME_CONF[@]}"; do 
-  egrep -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
+  grep -E -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
   ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
 done
 
diff --git a/ci-scripts/yaml_files/magma_nsa_20897/entrypoint.sh b/ci-scripts/yaml_files/magma_nsa_20897/entrypoint.sh
index 859ff7d98f..3095860169 100755
--- a/ci-scripts/yaml_files/magma_nsa_20897/entrypoint.sh
+++ b/ci-scripts/yaml_files/magma_nsa_20897/entrypoint.sh
@@ -19,7 +19,7 @@ MME_CONF[@HSS_IP_ADDR@]="192.168.61.194"
 cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
 
 for K in "${!MME_CONF[@]}"; do 
-  egrep -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
+  grep -E -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
   ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
 done
 
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index bcd151b086..05f3388627 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -42,7 +42,7 @@ KERNEL_VERSION=$(uname -r | cut -d '.' -f1)
 KERNEL_MAJOR=$(uname -r | cut -d '.' -f2)
 
 #check if we run inside a container
-IS_CONTAINER=`egrep -c "docker|podman|kubepods|libpod|buildah" /proc/self/cgroup || true`
+IS_CONTAINER=`grep -E -c "docker|podman|kubepods|libpod|buildah" /proc/self/cgroup || true`
 #sudo is not needed when we are root
 if [ "$UID" = 0 ]
 then
@@ -187,7 +187,7 @@ check_warnings() {
   #we look for 'warning:' in the compilation log file
   #this is how gcc starts a warning
   #this is not perfect, we may get false positive
-  warning_count=`grep "warning:" "$1" | egrep -v "jobserver unavailable|disabling jobserver mode" | wc -l`
+  warning_count=`grep "warning:" "$1" | grep -E -v "jobserver unavailable|disabling jobserver mode" | wc -l`
   if [ $warning_count -gt 0 ]; then
     echo_error "WARNING: $warning_count warnings. See $1"
   fi
@@ -223,7 +223,7 @@ compilations() {
     ret=$?
   } > $dlog/$logfile 2>&1
   # Print the errors and warnings for CI purposes
-  egrep -A3 "warning:|error:" $dlog/$logfile || true
+  grep -E -A3 "warning:|error:" $dlog/$logfile || true
   check_warnings "$dlog/$logfile"
   if [[ $ret -eq 0 ]]; then
      echo_success "$targets compiled"
diff --git a/docker/Dockerfile.build.ubuntu22.cross-arm64 b/docker/Dockerfile.build.ubuntu22.cross-arm64
index faadf79eb2..16090c87e8 100644
--- a/docker/Dockerfile.build.ubuntu22.cross-arm64
+++ b/docker/Dockerfile.build.ubuntu22.cross-arm64
@@ -48,7 +48,7 @@ RUN /bin/sh oaienv && \
     # making always passing so we can analyze the all.txt file
     ninja dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim lte-softmodem nr-softmodem nr-cuup oairu lte-uesoftmodem nr-uesoftmodem params_libconfig coding rfsimulator > ../../log/all.txt 2>&1; \
     # displaying errors and warnings
-    egrep -A3 "warning:|error:" ../../log/all.txt || true && \
+    grep -E -A3 "warning:|error:" ../../log/all.txt || true && \
     # will fail only if string "errors:" is found
-    egrep "error:" -vqz ../../log/all.txt && \
+    grep -E "error:" -vqz ../../log/all.txt && \
     echo "====== End of log for cross-build executables ======"
diff --git a/openair1/PHY/TOOLS/Makefile b/openair1/PHY/TOOLS/Makefile
index 8ed80cfdd1..a881bd4070 100644
--- a/openair1/PHY/TOOLS/Makefile
+++ b/openair1/PHY/TOOLS/Makefile
@@ -13,7 +13,7 @@ oai_dfts_sse4.s: oai_dfts.c
 
 
 dft_cycles_avx2: oai_dfts_avx2
-	./oai_dfts_avx2 | egrep cycles
+	./oai_dfts_avx2 | grep -E cycles
 
 oai_dfts_aarch64: oai_dfts_neon.c
 	 gcc -O2 -std=gnu99 -gdwarf-2 -lgcc -lrt -g -ggdb -o oai_dfts_neon oai_dfts_neon.c ../../../common/utils/time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/LOG/log.c  ../../SIMULATION/TOOLS/rangen_double.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -DNB_ANTENNAS_TX=1 -DMAX_NUM_CCs=1 -lm -lpthread