Merge remote-tracking branch 'origin/ci-remove-unused-code' into integration_2024_w38b
This commit is contained in:
@@ -200,6 +200,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${xmlFile}"
|
echo "Test XML file : ${xmlFile}"
|
||||||
|
} else {
|
||||||
|
echo "Test XML file ${xmlFile}: no such file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
withCredentials([
|
withCredentials([
|
||||||
|
|||||||
@@ -193,6 +193,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${xmlFile}"
|
echo "Test XML file : ${xmlFile}"
|
||||||
|
} else {
|
||||||
|
echo "Test XML file ${xmlFile}: no such file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,6 +186,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${xmlFile}"
|
echo "Test XML file : ${xmlFile}"
|
||||||
|
} else {
|
||||||
|
echo "Test XML file ${xmlFile}: no such file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,10 +39,8 @@ if (params.LockResources != null && params.LockResources.trim().length() > 0)
|
|||||||
|
|
||||||
// Terminate Status
|
// Terminate Status
|
||||||
def termENB = 0
|
def termENB = 0
|
||||||
def termOAIUE = 1
|
def termStatusArray = new Boolean[termENB + 1]
|
||||||
def termStatusArray = new Boolean[termOAIUE + 1]
|
|
||||||
termStatusArray[termENB] = false
|
termStatusArray[termENB] = false
|
||||||
termStatusArray[termOAIUE] = false
|
|
||||||
|
|
||||||
// Global Parameters. Normally they should be populated when the master job
|
// Global Parameters. Normally they should be populated when the master job
|
||||||
// triggers the slave job with parameters
|
// triggers the slave job with parameters
|
||||||
@@ -194,6 +192,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${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') {
|
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}"
|
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}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,6 +189,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${xmlFile}"
|
echo "Test XML file : ${xmlFile}"
|
||||||
|
} else {
|
||||||
|
echo "Test XML file ${xmlFile}: no such file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -200,6 +200,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${xmlFile}"
|
echo "Test XML file : ${xmlFile}"
|
||||||
|
} else {
|
||||||
|
echo "Test XML file ${xmlFile}: no such file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,6 +181,8 @@ pipeline {
|
|||||||
if (fileExists(xmlFile)) {
|
if (fileExists(xmlFile)) {
|
||||||
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
|
||||||
echo "Test XML file : ${xmlFile}"
|
echo "Test XML file : ${xmlFile}"
|
||||||
|
} else {
|
||||||
|
echo "Test XML file ${xmlFile}: no such file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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: <a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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()
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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
|
|
||||||
|
|
||||||
|
|
||||||
@@ -106,11 +106,11 @@ echo "Merged Commit is : $MERGE_COMMMIT"
|
|||||||
echo "Target Init is : $TARGET_INIT_COMMIT"
|
echo "Target Init is : $TARGET_INIT_COMMIT"
|
||||||
|
|
||||||
# Retrieve the list of modified files since the latest develop 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
|
NB_WARNINGS_FILES=0
|
||||||
|
|
||||||
# Retrieve list of warnings
|
# 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 ""
|
||||||
echo "List of files that have been modified by the Merge Request AND"
|
echo "List of files that have been modified by the Merge Request AND"
|
||||||
|
|||||||
@@ -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
|
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
|
# 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
|
# 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
|
if [ -f ./files-w-suspect-banner.txt ]; then rm -f ./files-w-suspect-banner.txt; fi
|
||||||
for FILE in $LIST_OF_FILES_W_BANNER
|
for FILE in $LIST_OF_FILES_W_BANNER
|
||||||
do
|
do
|
||||||
IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
|
IS_NFAPI=`echo $FILE | grep -E -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
|
||||||
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE || true`
|
IS_OAI_LICENCE_PRESENT=`grep -E -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_BSD_LICENCE_PRESENT=`grep -E -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_MIT_LICENCE_PRESENT=`grep -E -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_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 ]
|
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] && [ $IS_MIT_LICENCE_PRESENT -eq 0 ]
|
||||||
then
|
then
|
||||||
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
||||||
@@ -147,7 +147,7 @@ echo " ----------------------------------------------------------"
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Retrieve the list of modified files since the latest develop 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_TO_FORMAT=0
|
NB_TO_FORMAT=0
|
||||||
if [ -f header-files-w-incorrect-define.txt ]
|
if [ -f header-files-w-incorrect-define.txt ]
|
||||||
then
|
then
|
||||||
@@ -173,20 +173,20 @@ do
|
|||||||
if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
|
if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
|
||||||
then
|
then
|
||||||
# Testing if explicit GNU GPL license banner
|
# 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 ]
|
if [ $GNU_EXCEPTION -eq 0 ]
|
||||||
then
|
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
|
fi
|
||||||
# Looking at exotic/suspect banner
|
# 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 ]
|
if [ $IS_BANNER -ne 0 ]
|
||||||
then
|
then
|
||||||
IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
|
IS_NFAPI=`echo $FULLFILE | grep -E -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
|
||||||
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE || true`
|
IS_OAI_LICENCE_PRESENT=`grep -E -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_BSD_LICENCE_PRESENT=`grep -E -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_MIT_LICENCE_PRESENT=`grep -E -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_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 ]
|
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] && [ $IS_MIT_LICENCE_PRESENT -eq 0 ]
|
||||||
then
|
then
|
||||||
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -35,8 +35,6 @@ import subprocess
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
#for log rotation mgt
|
|
||||||
import cls_log_mgt
|
|
||||||
import cls_cmd
|
import cls_cmd
|
||||||
|
|
||||||
class Module_UE:
|
class Module_UE:
|
||||||
@@ -220,25 +218,6 @@ class Module_UE:
|
|||||||
|
|
||||||
def _disableTrace(self):
|
def _disableTrace(self):
|
||||||
raise Exception("not implemented")
|
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):
|
def _logCollect(self):
|
||||||
raise Exception("not implemented")
|
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
|
|
||||||
|
|
||||||
|
|||||||
@@ -254,30 +254,14 @@ class OaiCiTest():
|
|||||||
self.iperf_profile = ''
|
self.iperf_profile = ''
|
||||||
self.iperf_options = ''
|
self.iperf_options = ''
|
||||||
self.iperf_tcp_rate_target = ''
|
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.idle_sleep_time = 0
|
||||||
self.x2_ho_options = 'network'
|
|
||||||
self.x2NbENBs = 0
|
|
||||||
self.x2ENBBsIds = []
|
|
||||||
self.x2ENBConnectedUEs = []
|
|
||||||
self.repeatCounts = []
|
self.repeatCounts = []
|
||||||
self.finalStatus = False
|
self.finalStatus = False
|
||||||
self.UEIPAddress = ''
|
self.UEIPAddress = ''
|
||||||
self.UEUserName = ''
|
self.UEUserName = ''
|
||||||
self.UEPassword = ''
|
self.UEPassword = ''
|
||||||
self.UE_instance = 0
|
|
||||||
self.UESourceCodePath = ''
|
self.UESourceCodePath = ''
|
||||||
self.UELogFile = ''
|
self.UELogFile = ''
|
||||||
self.Build_OAI_UE_args = ''
|
|
||||||
self.Initialize_OAI_UE_args = ''
|
|
||||||
self.clean_repository = True
|
|
||||||
self.air_interface=''
|
self.air_interface=''
|
||||||
self.ue_ids = []
|
self.ue_ids = []
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
@@ -285,112 +269,6 @@ class OaiCiTest():
|
|||||||
self.svr_id = None
|
self.svr_id = None
|
||||||
self.cmd_prefix = '' # prefix before {lte,nr}-uesoftmodem
|
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):
|
def InitializeUE(self, HTML):
|
||||||
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
|
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
|
||||||
messages = []
|
messages = []
|
||||||
@@ -402,211 +280,6 @@ class OaiCiTest():
|
|||||||
[f.result() for f in futures]
|
[f.result() for f in futures]
|
||||||
HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages)
|
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):
|
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)]
|
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:
|
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)]
|
messages = [f"UE {ue.getName()}: {log}" for (ue, log) in zip(ues, archive_info)]
|
||||||
HTML.CreateHtmlTestRowQueue(f'N/A', 'OK', messages)
|
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='<b>' + ueAction + ' Failed</b>\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='<b>' + ueAction + ' Completed</b>\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):
|
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 != ''):
|
if (RAN.Initialize_eNB_args != ''):
|
||||||
self.testCase_id = 'AUTO-KILL-RAN'
|
self.testCase_id = 'AUTO-KILL-RAN'
|
||||||
HTML.testCase_id = self.testCase_id
|
HTML.testCase_id = self.testCase_id
|
||||||
@@ -1310,55 +921,6 @@ class OaiCiTest():
|
|||||||
time.sleep(self.idle_sleep_time)
|
time.sleep(self.idle_sleep_time)
|
||||||
HTML.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', CONST.ALL_PROCESSES_OK)
|
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 = '<pre style="background-color:white">'
|
|
||||||
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):
|
def LogCollectBuild(self,RAN):
|
||||||
# Some pipelines are using "none" IP / Credentials
|
# Some pipelines are using "none" IP / Credentials
|
||||||
# In that case, just forget about it
|
# In that case, just forget about it
|
||||||
|
|||||||
@@ -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.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', '.')
|
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/log/physim_test.txt', '.')
|
||||||
try:
|
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'):
|
for line in listLogFiles.split('\n'):
|
||||||
res1 = re.search('Linux (?P<pod>oai-[a-zA-Z0-9\-]+) ', str(line))
|
res1 = re.search('Linux (?P<pod>oai-[a-zA-Z0-9\-]+) ', str(line))
|
||||||
res2 = re.search('Execution Log file = (?P<name>[a-zA-Z0-9\-\/\.\_\+]+)', str(line))
|
res2 = re.search('Execution Log file = (?P<name>[a-zA-Z0-9\-\/\.\_\+]+)', str(line))
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ git config user.email "jenkins@openairinterface.org"
|
|||||||
git config user.name "OAI Jenkins"
|
git config user.name "OAI Jenkins"
|
||||||
|
|
||||||
git checkout -f $SOURCE_COMMIT_ID > checkout.txt 2>&1
|
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
|
rm -f checkout.txt
|
||||||
if [ $STATUS -ne 0 ]
|
if [ $STATUS -ne 0 ]
|
||||||
then
|
then
|
||||||
@@ -137,7 +137,7 @@ fi
|
|||||||
|
|
||||||
git merge --ff $TARGET_COMMIT_ID -m "Temporary merge for CI"
|
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 ]
|
if [ $STATUS -ne 0 ]
|
||||||
then
|
then
|
||||||
echo "There are merge conflicts.. Cannot perform further build tasks"
|
echo "There are merge conflicts.. Cannot perform further build tasks"
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ RUN mkdir -p cmake_targets/log && \
|
|||||||
-I openair3/NAS/COMMON/UTIL \
|
-I openair3/NAS/COMMON/UTIL \
|
||||||
-j`nproc` . 2> cmake_targets/log/cppcheck.xml 1> cmake_targets/log/cppcheck_build.txt
|
-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
|
RUN cat cmake_targets/log/cppcheck.xml
|
||||||
|
|||||||
+2
-2
@@ -568,7 +568,7 @@ class EPCManagement():
|
|||||||
mySSH.command('python3 ./core-network.py '+self.cfgUnDeploy, '\$', 60)
|
mySSH.command('python3 ./core-network.py '+self.cfgUnDeploy, '\$', 60)
|
||||||
mySSH.command('docker volume prune --force || true', '\$', 60)
|
mySSH.command('docker volume prune --force || true', '\$', 60)
|
||||||
time.sleep(2)
|
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())
|
result = re.search('Tracking area update request', mySSH.getBefore())
|
||||||
if result is not None:
|
if result is not None:
|
||||||
message = 'UE requested ' + str(mySSH.getBefore().count('Tracking area update request')) + 'Tracking area update request(s)'
|
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)
|
mySSH.command('docker cp prod-magma-mme:/tmp/mme_check_run.pcap mme_' + self.testCase_id + '.pcap', '\$', 60)
|
||||||
else:
|
else:
|
||||||
mySSH.command('docker cp prod-oai-mme:/tmp/mme_check_run.pcap mme_' + self.testCase_id + '.pcap', '\$', 60)
|
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())
|
result = re.search('Tracking area update request', mySSH.getBefore())
|
||||||
if result is not None:
|
if result is not None:
|
||||||
message = 'UE requested ' + str(mySSH.getBefore().count('Tracking area update request')) + 'Tracking area update request(s)'
|
message = 'UE requested ' + str(mySSH.getBefore().count('Tracking area update request')) + 'Tracking area update request(s)'
|
||||||
|
|||||||
@@ -225,47 +225,6 @@ def GetParametersFromXML(action):
|
|||||||
else:
|
else:
|
||||||
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
|
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':
|
elif action == 'Ping':
|
||||||
CiTestObj.ping_args = test.findtext('ping_args')
|
CiTestObj.ping_args = test.findtext('ping_args')
|
||||||
CiTestObj.ping_packetloss_threshold = test.findtext('ping_packetloss_threshold')
|
CiTestObj.ping_packetloss_threshold = test.findtext('ping_packetloss_threshold')
|
||||||
@@ -319,17 +278,6 @@ def GetParametersFromXML(action):
|
|||||||
else:
|
else:
|
||||||
CiTestObj.idle_sleep_time = int(string_field)
|
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':
|
elif action == 'Build_PhySim':
|
||||||
ldpc.buildargs = test.findtext('physim_build_args')
|
ldpc.buildargs = test.findtext('physim_build_args')
|
||||||
forced_workspace_cleanup = test.findtext('forced_workspace_cleanup')
|
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.eNB_serverId[0]='0'
|
||||||
RAN.eNBSourceCodePath='/tmp/'
|
RAN.eNBSourceCodePath='/tmp/'
|
||||||
RAN.TerminateeNB(HTML, EPC)
|
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):
|
elif re.match('^TerminateHSS$', mode, re.IGNORECASE):
|
||||||
if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '':
|
if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '':
|
||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
@@ -780,12 +722,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
CiTestObj.DataEnableUE(HTML)
|
CiTestObj.DataEnableUE(HTML)
|
||||||
elif action == 'CheckStatusUE':
|
elif action == 'CheckStatusUE':
|
||||||
CiTestObj.CheckStatusUE(HTML)
|
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':
|
elif action == 'Ping':
|
||||||
CiTestObj.Ping(HTML,RAN,EPC,CONTAINERS)
|
CiTestObj.Ping(HTML,RAN,EPC,CONTAINERS)
|
||||||
elif action == 'Iperf':
|
elif action == 'Iperf':
|
||||||
@@ -814,8 +750,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
EPC.UndeployEpc(HTML)
|
EPC.UndeployEpc(HTML)
|
||||||
elif action == 'IdleSleep':
|
elif action == 'IdleSleep':
|
||||||
CiTestObj.IdleSleep(HTML)
|
CiTestObj.IdleSleep(HTML)
|
||||||
elif action == 'Perform_X2_Handover':
|
|
||||||
CiTestObj.Perform_X2_Handover(HTML,RAN,EPC)
|
|
||||||
elif action == 'Build_PhySim':
|
elif action == 'Build_PhySim':
|
||||||
HTML=ldpc.Build_PhySim(HTML,CONST)
|
HTML=ldpc.Build_PhySim(HTML,CONST)
|
||||||
if ldpc.exitStatus==1:
|
if ldpc.exitStatus==1:
|
||||||
|
|||||||
+1
-1
@@ -512,7 +512,7 @@ class RANManagement():
|
|||||||
self.prematureExit = True
|
self.prematureExit = True
|
||||||
return
|
return
|
||||||
else:
|
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:
|
if rruCheck:
|
||||||
result = re.search('wait RUs', mySSH.getBefore())
|
result = re.search('wait RUs', mySSH.getBefore())
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -13,9 +13,6 @@
|
|||||||
- Terminate_UE
|
- Terminate_UE
|
||||||
- Attach_UE
|
- Attach_UE
|
||||||
- Detach_UE
|
- Detach_UE
|
||||||
- Build_OAI_UE
|
|
||||||
- Initialize_OAI_UE
|
|
||||||
- Terminate_OAI_UE
|
|
||||||
- DataDisable_UE
|
- DataDisable_UE
|
||||||
- DataEnable_UE
|
- DataEnable_UE
|
||||||
- CheckStatusUE
|
- CheckStatusUE
|
||||||
@@ -33,7 +30,6 @@
|
|||||||
- Initialize_5GCN
|
- Initialize_5GCN
|
||||||
- Terminate_5GCN
|
- Terminate_5GCN
|
||||||
- IdleSleep
|
- IdleSleep
|
||||||
- Perform_X2_Handover
|
|
||||||
- Build_Image
|
- Build_Image
|
||||||
- Build_Run_Tests
|
- Build_Run_Tests
|
||||||
- Deploy_Object
|
- Deploy_Object
|
||||||
|
|||||||
@@ -1,41 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
000001
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build gNB</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --gNB --ninja --noavx512</Build_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,73 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
000001 000002
|
|
||||||
000004 000005 000003
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build eNB</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --eNB --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<backgroundBuild>True</backgroundBuild>
|
|
||||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000004">
|
|
||||||
<class>WaitEndBuild_eNB</class>
|
|
||||||
<desc>Wait for end of Build eNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build gNB</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --gNB --ninja --noavx512</Build_eNB_args>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
<backgroundBuild>True</backgroundBuild>
|
|
||||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000003">
|
|
||||||
<class>WaitEndBuild_eNB</class>
|
|
||||||
<desc>Wait for end of Build gNB</desc>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000005">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>120</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,120 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>TEST-SA-FR1-Tab1</htmlTabRef>
|
|
||||||
<htmlTabName>SA Ping DL UL with OAI NR UE</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
040000
|
|
||||||
000002
|
|
||||||
010000
|
|
||||||
000002
|
|
||||||
050000
|
|
||||||
050001
|
|
||||||
000001
|
|
||||||
010002
|
|
||||||
080000
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010000">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize OAI UE</desc>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<Initialize_OAI_UE_args>--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</Initialize_OAI_UE_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="010002">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate OAI UE</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="040000">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
|
||||||
<eNB_Stats>yes</eNB_Stats>
|
|
||||||
<USRP_IPAddress>172.21.19.14</USRP_IPAddress>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="050000">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping from CN to UE: 20pings in 20sec</desc>
|
|
||||||
<ping_args>-c 20 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="050001">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping from CN to UE: 100pings in 20sec</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<ping_args>-c 100 -i 0.2 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070000">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 60M -t 60 -R</iperf_args>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070001">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 3M -t 60</iperf_args>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="080000">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
|
|
||||||
@@ -1,136 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>TEST-SA-FR1-Tab1</htmlTabRef>
|
|
||||||
<htmlTabName>SA Ping DL UL with OAI NR UE (N310)</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
100000
|
|
||||||
040000
|
|
||||||
000002
|
|
||||||
010000
|
|
||||||
000002
|
|
||||||
050000
|
|
||||||
050001
|
|
||||||
000001
|
|
||||||
010002
|
|
||||||
080000
|
|
||||||
200000
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010000">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize OAI UE (N310)</desc>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<Initialize_OAI_UE_args>--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</Initialize_OAI_UE_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="010002">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate OAI UE</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="100000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Disable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -D 0</command>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="200000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Enable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -E</command>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="040000">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
|
||||||
<eNB_Stats>yes</eNB_Stats>
|
|
||||||
<USRP_IPAddress>172.21.19.14</USRP_IPAddress>
|
|
||||||
<cmd_prefix>numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0</cmd_prefix>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="050000">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping from CN to UE: 20pings in 20sec</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<ping_args>-c 20 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="050001">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping from CN to UE: 100pings in 20sec</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<ping_args>-c 100 -i 0.2 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070000">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<iperf_args>-u -b 60M -t 60 -R</iperf_args>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070001">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<iperf_args>-u -b 3M -t 60</iperf_args>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="080000">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
|
|
||||||
@@ -1,121 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>TEST-SA-FR1-Tab2</htmlTabRef>
|
|
||||||
<htmlTabName>SA Ping DL UL with OAI NR UE (X300)</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
041000
|
|
||||||
000002
|
|
||||||
011000
|
|
||||||
000002
|
|
||||||
051000
|
|
||||||
051001
|
|
||||||
000001
|
|
||||||
010002
|
|
||||||
080000
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="011000">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize OAI UE (X300)</desc>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<Initialize_OAI_UE_args>--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</Initialize_OAI_UE_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="010002">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate OAI UE</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="041000">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
|
||||||
<eNB_Stats>yes</eNB_Stats>
|
|
||||||
<USRP_IPAddress>172.21.19.14</USRP_IPAddress>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="051000">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping from CN to UE: 20pings in 20sec</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<ping_args>-c 20 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="051001">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping from CN to UE: 100pings in 20sec</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<ping_args>-c 100 -i 0.2 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070000">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<iperf_args>-u -b 60M -t 60 -R</iperf_args>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070001">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<id>oai_ue_obelix</id>
|
|
||||||
<iperf_args>-u -b 3M -t 60</iperf_args>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="080000">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
|
|
||||||
@@ -1,168 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>TEST-SA-FR1-Tab1</htmlTabRef>
|
|
||||||
<htmlTabName>SA Ping DL UL with Quectel, 2.5ms TDD</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
100000
|
|
||||||
300000
|
|
||||||
010000
|
|
||||||
040000
|
|
||||||
010010
|
|
||||||
050000
|
|
||||||
050001
|
|
||||||
070000
|
|
||||||
070001
|
|
||||||
070002
|
|
||||||
010001
|
|
||||||
080000
|
|
||||||
020000
|
|
||||||
200000
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="100000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Disable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -D 0</command>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="200000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Enable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -E</command>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="300000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Reboot USRP</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>ssh root@172.21.19.14 reboot ; sleep 45</command>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="010000">
|
|
||||||
<class>Initialize_UE</class>
|
|
||||||
<desc>Initialize Quectel</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="010010">
|
|
||||||
<class>Attach_UE</class>
|
|
||||||
<desc>Attach Quectel UE</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="010001">
|
|
||||||
<class>Detach_UE</class>
|
|
||||||
<desc>Detach Quectel UE</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="020000">
|
|
||||||
<class>Terminate_UE</class>
|
|
||||||
<desc>Terminate Quectel</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="040000">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
|
||||||
<eNB_Stats>yes</eNB_Stats>
|
|
||||||
<rt_stats_cfg>datalog_rt_stats.2x2.yaml</rt_stats_cfg>
|
|
||||||
<USRP_IPAddress>172.21.19.14</USRP_IPAddress>
|
|
||||||
<cmd_prefix>numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0</cmd_prefix>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="050000">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping: 40pings in 40sec</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<ping_args>-c 40 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
|
||||||
<ping_rttavg_threshold>10</ping_rttavg_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="050001">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping: 100pings in 20sec</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<ping_args>-c 100 -i 0,2 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
|
||||||
<ping_rttavg_threshold>10</ping_rttavg_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070000">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 60M -t 60 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070001">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 7M -t 60</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070002">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (BIDIR TCP)(10 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-t 10 --bidir</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="080000">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<d_retx_th>5,80,100,100</d_retx_th>
|
|
||||||
<u_retx_th>5,80,100,100</u_retx_th>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
|
|
||||||
@@ -1,157 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>TEST-SA-FR1-Tab3</htmlTabRef>
|
|
||||||
<htmlTabName>SA 162PRB</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
100000
|
|
||||||
010000
|
|
||||||
042000
|
|
||||||
010001
|
|
||||||
052000
|
|
||||||
000001
|
|
||||||
072000
|
|
||||||
000001
|
|
||||||
072001
|
|
||||||
000001
|
|
||||||
072002
|
|
||||||
000001
|
|
||||||
010011
|
|
||||||
010002
|
|
||||||
080000
|
|
||||||
200000
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010000">
|
|
||||||
<class>Initialize_UE</class>
|
|
||||||
<desc>Initialize Quectel</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="010001">
|
|
||||||
<class>Attach_UE</class>
|
|
||||||
<desc>Attach Quectel UE</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="010011">
|
|
||||||
<class>Detach_UE</class>
|
|
||||||
<desc>Detach Quectel UE</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="010002">
|
|
||||||
<class>Terminate_UE</class>
|
|
||||||
<desc>Terminate Quectel</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="042000">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
|
||||||
<eNB_Stats>yes</eNB_Stats>
|
|
||||||
<rt_stats_cfg>datalog_rt_stats.2x2.yaml</rt_stats_cfg>
|
|
||||||
<USRP_IPAddress>172.21.19.14</USRP_IPAddress>
|
|
||||||
<cmd_prefix>numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0</cmd_prefix>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="100000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Disable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -D 0</command>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="200000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Enable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -E</command>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="052000">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping: 40pings in 40sec</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<ping_args>-c 40 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
|
||||||
<ping_rttavg_threshold>20</ping_rttavg_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="072000">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/180Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 180M -t 60 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>50</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="072001">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 3M -t 60</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="072002">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (BIDIR TCP)(10 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-t 10 --bidir</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="080000">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<d_retx_th>5,80,100,100</d_retx_th>
|
|
||||||
<u_retx_th>5,80,100,100</u_retx_th>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
|
|
||||||
@@ -1,189 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>TEST-SA-FR1-Tab2</htmlTabRef>
|
|
||||||
<htmlTabName>SA Staged DL with QUECTEL</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
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
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="100000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Disable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -D 0</command>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="200000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Enable Sleep States</desc>
|
|
||||||
<node>asterix</node>
|
|
||||||
<command>sudo cpupower idle-set -E</command>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="011000">
|
|
||||||
<class>Initialize_UE</class>
|
|
||||||
<desc>Initialize Quectel</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="011001">
|
|
||||||
<class>Attach_UE</class>
|
|
||||||
<desc>Attach Quectel UE</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="011011">
|
|
||||||
<class>Detach_UE</class>
|
|
||||||
<desc>Detach Quectel UE </desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="011002">
|
|
||||||
<class>Terminate_UE</class>
|
|
||||||
<desc>Terminate Quectel</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="041000">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
|
||||||
<eNB_Stats>yes</eNB_Stats>
|
|
||||||
<rt_stats_cfg>datalog_rt_stats.2x2.yaml</rt_stats_cfg>
|
|
||||||
<USRP_IPAddress>172.21.19.14</USRP_IPAddress>
|
|
||||||
<cmd_prefix>numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0</cmd_prefix>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="051000">
|
|
||||||
<class>Ping</class>
|
|
||||||
<desc>Ping: 40pings in 40sec</desc>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<ping_args>-c 40 %cn_ip%</ping_args>
|
|
||||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
|
||||||
<ping_rttavg_threshold>20</ping_rttavg_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="071000">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/10Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 10M -t 30 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="071001">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/20Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 20M -t 30 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="071002">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/40Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 40M -t 30 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="071003">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/60Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 60M -t 30 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="071004">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/90Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 90M -t 30 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>10</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
<testCase id="071005">
|
|
||||||
<class>Iperf</class>
|
|
||||||
<desc>iperf (DL/130Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
|
||||||
<iperf_args>-u -b 130M -t 30 -R</iperf_args>
|
|
||||||
<id>nrmodule2_quectel</id>
|
|
||||||
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
|
||||||
<iperf_bitrate_threshold>50</iperf_bitrate_threshold>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
|
|
||||||
<testCase id="081000">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<air_interface>nr</air_interface>
|
|
||||||
<d_retx_th>5,80,100,100</d_retx_th>
|
|
||||||
<u_retx_th>5,80,100,100</u_retx_th>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
|
|
||||||
@@ -1,71 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>run-oai-gnb-nr-ue</htmlTabRef>
|
|
||||||
<htmlTabName>Run-gNB-and-NR-UE</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
090101 000001 090102 000002 090108 090109
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="090101">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB USRP</desc>
|
|
||||||
<Initialize_eNB_args>-O ci-scripts/conf_files/gnb.band78.106prb.usrpn300.phytest-dora.conf --phy-test --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Waiting for NR UE to synchronize w/ gNB</desc>
|
|
||||||
<idle_sleep_time_in_sec>180</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090102">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize NR UE USRP</desc>
|
|
||||||
<Initialize_OAI_UE_args>--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</Initialize_OAI_UE_args>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090108">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate NR UE</desc>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090109">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,71 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>run-oai-gnb-nr-ue-tx-write-thread</htmlTabRef>
|
|
||||||
<htmlTabName>Run-gNB-and-NR-UE-TX-Write-Thread</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
090103 000001 090104 000002 090108 090109
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="090103">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize gNB USRP (Tx-Write-Threading enabled)</desc>
|
|
||||||
<Initialize_eNB_args>-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</Initialize_eNB_args>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000002">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Waiting for NR UE to synchronize w/ gNB</desc>
|
|
||||||
<idle_sleep_time_in_sec>180</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090104">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize NR UE USRP</desc>
|
|
||||||
<Initialize_OAI_UE_args>--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</Initialize_OAI_UE_args>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090108">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate NR UE</desc>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090109">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,44 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>terminate-oai-gnb-nr-ue</htmlTabRef>
|
|
||||||
<htmlTabName>Terminate-gNB-and-NR-UE</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
090108 090109
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="090108">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate NR UE</desc>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090109">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate gNB</desc>
|
|
||||||
<air_interface>NR</air_interface>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,39 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
010101
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010101">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build eNB (USRP -- Ethernet Fronthaul)</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --eNB --ninja</Build_eNB_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,48 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>epc-closure</htmlTabRef>
|
|
||||||
<htmlTabName>EPC-Closure</htmlTabName>
|
|
||||||
<htmlTabIcon>log-out</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
050201 060201 070201
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="050201">
|
|
||||||
<class>Terminate_HSS</class>
|
|
||||||
<desc>Terminate HSS</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="060201">
|
|
||||||
<class>Terminate_MME</class>
|
|
||||||
<desc>Terminate MME</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070201">
|
|
||||||
<class>Terminate_SPGW</class>
|
|
||||||
<desc>Terminate SPGW</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,48 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>epc-start-tab</htmlTabRef>
|
|
||||||
<htmlTabName>EPC-Start</htmlTabName>
|
|
||||||
<htmlTabIcon>log-in</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
050101 060101 070101
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="050101">
|
|
||||||
<class>Initialize_HSS</class>
|
|
||||||
<desc>Initialize HSS</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="060101">
|
|
||||||
<class>Initialize_MME</class>
|
|
||||||
<desc>Initialize MME</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070101">
|
|
||||||
<class>Initialize_SPGW</class>
|
|
||||||
<desc>Initialize SPGW</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,39 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
010101
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010101">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build eNB (USRP -- Ethernet Fronthaul)</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --eNB --ninja</Build_eNB_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,48 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>epc-closure</htmlTabRef>
|
|
||||||
<htmlTabName>EPC-Closure</htmlTabName>
|
|
||||||
<htmlTabIcon>log-out</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
050201 060201 070201
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="050201">
|
|
||||||
<class>Terminate_HSS</class>
|
|
||||||
<desc>Terminate HSS</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="060201">
|
|
||||||
<class>Terminate_MME</class>
|
|
||||||
<desc>Terminate MME</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070201">
|
|
||||||
<class>Terminate_SPGW</class>
|
|
||||||
<desc>Terminate SPGW</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,48 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>epc-start-tab</htmlTabRef>
|
|
||||||
<htmlTabName>EPC-Start</htmlTabName>
|
|
||||||
<htmlTabIcon>log-in</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
050101 060101 070101 040101
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="050101">
|
|
||||||
<class>Initialize_HSS</class>
|
|
||||||
<desc>Initialize HSS</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="060101">
|
|
||||||
<class>Initialize_MME</class>
|
|
||||||
<desc>Initialize MME</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="070101">
|
|
||||||
<class>Initialize_SPGW</class>
|
|
||||||
<desc>Initialize SPGW</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,84 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
010101 010102 010103
|
|
||||||
000102 000103 000101
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010101">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build RCC</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --eNB --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
<backgroundBuild>True</backgroundBuild>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000101">
|
|
||||||
<class>WaitEndBuild_eNB</class>
|
|
||||||
<desc>Wait for end of Build RCC</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --eNB --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="010102">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build Master RRU</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --RU --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
<backgroundBuild>True</backgroundBuild>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000102">
|
|
||||||
<class>WaitEndBuild_eNB</class>
|
|
||||||
<desc>Wait for end of Build Master RRU</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --RU --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="010103">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build Slave RRU</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --RU --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>2</eNB_instance>
|
|
||||||
<eNB_serverId>2</eNB_serverId>
|
|
||||||
<backgroundBuild>True</backgroundBuild>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000103">
|
|
||||||
<class>WaitEndBuild_eNB</class>
|
|
||||||
<desc>Wait for end of Build Slave RRU</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --RU --ninja</Build_eNB_args>
|
|
||||||
<eNB_instance>2</eNB_instance>
|
|
||||||
<eNB_serverId>2</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,53 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>test-full-termintation</htmlTabRef>
|
|
||||||
<htmlTabName>Test-RCC-RRUs-Termination</htmlTabName>
|
|
||||||
<htmlTabIcon>off</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
030211 030212 030213
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="030211">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate RCC</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030212">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate Master RRU</desc>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030213">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate Slave RRU</desc>
|
|
||||||
<eNB_instance>2</eNB_instance>
|
|
||||||
<eNB_serverId>2</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,87 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>test-multi-rru-10</htmlTabRef>
|
|
||||||
<htmlTabName>Test-Multi-RRU-10MHz</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
030211 030212 030213
|
|
||||||
030111 030112 030113
|
|
||||||
000001
|
|
||||||
030211 030212 030213
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>60</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030111">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize RCC (TDD/Band38/10MHz)</desc>
|
|
||||||
<Initialize_eNB_args>-O ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf --noS1 --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030112">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize Master RRU (TDD/Band38/10MHz)</desc>
|
|
||||||
<Initialize_eNB_args>-O ci-scripts/conf_files/rru.band38.tm1.master.conf --noS1 --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030113">
|
|
||||||
<class>Initialize_eNB</class>
|
|
||||||
<desc>Initialize Slave RRU (TDD/Band38/10MHz)</desc>
|
|
||||||
<Initialize_eNB_args>-O ci-scripts/conf_files/rru.band38.tm1.slave.conf --noS1 --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
|
|
||||||
<eNB_instance>2</eNB_instance>
|
|
||||||
<eNB_serverId>2</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030211">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate RCC</desc>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030212">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate Master RRU</desc>
|
|
||||||
<eNB_instance>1</eNB_instance>
|
|
||||||
<eNB_serverId>1</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="030213">
|
|
||||||
<class>Terminate_eNB</class>
|
|
||||||
<desc>Terminate Slave RRU</desc>
|
|
||||||
<eNB_instance>2</eNB_instance>
|
|
||||||
<eNB_serverId>2</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,41 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>nr-ue-build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build-NR-UE</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
010102
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010102">
|
|
||||||
<mode>TestUE</mode>
|
|
||||||
<class>Build_OAI_UE</class>
|
|
||||||
<desc>Build NR UE (USRP)</desc>
|
|
||||||
<Build_OAI_UE_args>--nrUE -w USRP --ninja</Build_OAI_UE_args>
|
|
||||||
<clean_repository>false</clean_repository>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,47 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
000001
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList>
|
|
||||||
</TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="010101">
|
|
||||||
<class>Build_eNB</class>
|
|
||||||
<desc>Build Master eNB (USRP)</desc>
|
|
||||||
<Build_eNB_args>-w USRP -c --eNB</Build_eNB_args>
|
|
||||||
<eNB_instance>0</eNB_instance>
|
|
||||||
<eNB_serverId>0</eNB_serverId>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,38 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>build-tab</htmlTabRef>
|
|
||||||
<htmlTabName>Build</htmlTabName>
|
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
090101
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="090101">
|
|
||||||
<class>Build_OAI_UE</class>
|
|
||||||
<desc>Build OAI UE</desc>
|
|
||||||
<Build_OAI_UE_args>-w USRP --UE --ninja</Build_OAI_UE_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,51 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>test-10mhz-orange</htmlTabRef>
|
|
||||||
<htmlTabName>Test-10Mhz-Orange</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
090109
|
|
||||||
090110 000001 090109
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="090110">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize OAI UE -- sniffing Orange frequency</desc>
|
|
||||||
<Initialize_OAI_UE_args>-C 816000000 -r 50 --ue-rxgain 135 --ue-scan-carrier --no-L2-connect --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>30</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090109">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate OAI UE</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -1,51 +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
|
|
||||||
|
|
||||||
-->
|
|
||||||
<testCaseList>
|
|
||||||
<htmlTabRef>test-10mHz-sfr</htmlTabRef>
|
|
||||||
<htmlTabName>Test-10MHz-SFR</htmlTabName>
|
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
|
||||||
<repeatCount>1</repeatCount>
|
|
||||||
<TestCaseRequestedList>
|
|
||||||
090109
|
|
||||||
090111 000001 090109
|
|
||||||
</TestCaseRequestedList>
|
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
|
||||||
|
|
||||||
<testCase id="090111">
|
|
||||||
<class>Initialize_OAI_UE</class>
|
|
||||||
<desc>Initialize OAI UE -- sniffing SFR frequency</desc>
|
|
||||||
<Initialize_OAI_UE_args>-C 806000000 -r 50 --ue-rxgain 130 --ue-scan-carrier --no-L2-connect --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000001">
|
|
||||||
<class>IdleSleep</class>
|
|
||||||
<desc>Sleep</desc>
|
|
||||||
<idle_sleep_time_in_sec>30</idle_sleep_time_in_sec>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="090109">
|
|
||||||
<class>Terminate_OAI_UE</class>
|
|
||||||
<desc>Terminate OAI UE</desc>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
</testCaseList>
|
|
||||||
@@ -19,7 +19,7 @@ MME_CONF[@HSS_IP_ADDR@]="192.168.61.2"
|
|||||||
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
||||||
|
|
||||||
for K in "${!MME_CONF[@]}"; do
|
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]}"
|
ret=$?;[[ ret -ne 0 ]] && echo "Could not replace $K with ${MME_CONF[$K]}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ then
|
|||||||
ifconfig ${MME_INTERFACE_NAME_FOR_S10} ${MME_IPV4_ADDRESS_FOR_S10} up
|
ifconfig ${MME_INTERFACE_NAME_FOR_S10} ${MME_IPV4_ADDRESS_FOR_S10} up
|
||||||
fi
|
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
|
for if_name in $LIST_OF_NETWORKS
|
||||||
do
|
do
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ MME_CONF[@HSS_IP_ADDR@]="192.168.61.194"
|
|||||||
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
||||||
|
|
||||||
for K in "${!MME_CONF[@]}"; do
|
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]}"
|
ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ MME_CONF[@HSS_IP_ADDR@]="192.168.61.194"
|
|||||||
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
||||||
|
|
||||||
for K in "${!MME_CONF[@]}"; do
|
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]}"
|
ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ KERNEL_VERSION=$(uname -r | cut -d '.' -f1)
|
|||||||
KERNEL_MAJOR=$(uname -r | cut -d '.' -f2)
|
KERNEL_MAJOR=$(uname -r | cut -d '.' -f2)
|
||||||
|
|
||||||
#check if we run inside a container
|
#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
|
#sudo is not needed when we are root
|
||||||
if [ "$UID" = 0 ]
|
if [ "$UID" = 0 ]
|
||||||
then
|
then
|
||||||
@@ -187,7 +187,7 @@ check_warnings() {
|
|||||||
#we look for 'warning:' in the compilation log file
|
#we look for 'warning:' in the compilation log file
|
||||||
#this is how gcc starts a warning
|
#this is how gcc starts a warning
|
||||||
#this is not perfect, we may get false positive
|
#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
|
if [ $warning_count -gt 0 ]; then
|
||||||
echo_error "WARNING: $warning_count warnings. See $1"
|
echo_error "WARNING: $warning_count warnings. See $1"
|
||||||
fi
|
fi
|
||||||
@@ -223,7 +223,7 @@ compilations() {
|
|||||||
ret=$?
|
ret=$?
|
||||||
} > $dlog/$logfile 2>&1
|
} > $dlog/$logfile 2>&1
|
||||||
# Print the errors and warnings for CI purposes
|
# 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"
|
check_warnings "$dlog/$logfile"
|
||||||
if [[ $ret -eq 0 ]]; then
|
if [[ $ret -eq 0 ]]; then
|
||||||
echo_success "$targets compiled"
|
echo_success "$targets compiled"
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ RUN /bin/sh oaienv && \
|
|||||||
# making always passing so we can analyze the all.txt file
|
# 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; \
|
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
|
# 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
|
# 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 ======"
|
echo "====== End of log for cross-build executables ======"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ oai_dfts_sse4.s: oai_dfts.c
|
|||||||
|
|
||||||
|
|
||||||
dft_cycles_avx2: oai_dfts_avx2
|
dft_cycles_avx2: oai_dfts_avx2
|
||||||
./oai_dfts_avx2 | egrep cycles
|
./oai_dfts_avx2 | grep -E cycles
|
||||||
|
|
||||||
oai_dfts_aarch64: oai_dfts_neon.c
|
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
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user