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 e55de8b57c..c1ed3e6b0e 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 @@ -194,6 +192,8 @@ pipeline { if (fileExists(xmlFile)) { mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " " echo "Test XML file : ${xmlFile}" + } else { + echo "Test XML file ${xmlFile}: no such file" } } } @@ -241,23 +241,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 +456,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/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" } } } 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}" - } - } - } - } - } - } -} - - 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/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_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 - diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index fb862b132c..61f88bb557 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -254,30 +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.x2_ho_options = 'network' - self.x2NbENBs = 0 - self.x2ENBBsIds = [] - self.x2ENBConnectedUEs = [] self.repeatCounts = [] self.finalStatus = False self.UEIPAddress = '' self.UEUserName = '' self.UEPassword = '' - 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='' self.ue_ids = [] self.nodes = [] @@ -285,112 +269,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 = [] @@ -402,211 +280,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(max_workers=64) as executor: @@ -1186,69 +859,7 @@ 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): - # 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 @@ -1310,55 +921,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/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/main.py b/ci-scripts/main.py
index 532a5f564d..0e54401b7b 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -225,47 +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')
-		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):
-			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')
@@ -319,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')
@@ -520,12 +468,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)
@@ -780,12 +722,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':
-						CiTestObj.TerminateOAIUE(HTML,RAN,EPC,CONTAINERS)
 					elif action == 'Ping':
 						CiTestObj.Ping(HTML,RAN,EPC,CONTAINERS)
 					elif action == 'Iperf':
@@ -814,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/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/xml_class_list.yml b/ci-scripts/xml_class_list.yml
index 18c2c4632d..34f63e8c2b 100755
--- a/ci-scripts/xml_class_list.yml
+++ b/ci-scripts/xml_class_list.yml
@@ -13,9 +13,6 @@
   - Terminate_UE
   - Attach_UE
   - Detach_UE
-  - Build_OAI_UE
-  - Initialize_OAI_UE
-  - Terminate_OAI_UE
   - DataDisable_UE
   - DataEnable_UE
   - CheckStatusUE
@@ -33,7 +30,6 @@
   - Initialize_5GCN
   - Terminate_5GCN
   - IdleSleep
-  - Perform_X2_Handover
   - Build_Image
   - Build_Run_Tests
   - Deploy_Object
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
-	
-
-
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 8acc630888..d1dadf9535 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