Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
canghaiwuhen
OpenXG-RAN
Commits
cc4182a3
Commit
cc4182a3
authored
Mar 09, 2019
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop-nr' into nr_pdcch_updates
parents
8a885d46
94cca321
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
2691 additions
and
373 deletions
+2691
-373
ci-scripts/Jenkinsfile-tmp-ran
ci-scripts/Jenkinsfile-tmp-ran
+46
-12
ci-scripts/active_net_interfaces.awk
ci-scripts/active_net_interfaces.awk
+21
-0
ci-scripts/doGitLabMerge.sh
ci-scripts/doGitLabMerge.sh
+26
-0
ci-scripts/main.py
ci-scripts/main.py
+652
-193
ci-scripts/tcp_iperf_stats.awk
ci-scripts/tcp_iperf_stats.awk
+20
-0
ci-scripts/xml_files/enb_usrp210_band40_build.xml
ci-scripts/xml_files/enb_usrp210_band40_build.xml
+54
-0
ci-scripts/xml_files/enb_usrp210_band40_epc_closure.xml
ci-scripts/xml_files/enb_usrp210_band40_epc_closure.xml
+47
-0
ci-scripts/xml_files/enb_usrp210_band40_test_05mhz_tm1.xml
ci-scripts/xml_files/enb_usrp210_band40_test_05mhz_tm1.xml
+119
-0
ci-scripts/xml_files/enb_usrp210_band40_test_10mhz_tm1.xml
ci-scripts/xml_files/enb_usrp210_band40_test_10mhz_tm1.xml
+5
-112
ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1.xml
ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1.xml
+119
-0
ci-scripts/xml_files/enb_usrp210_band40_tracer.xml
ci-scripts/xml_files/enb_usrp210_band40_tracer.xml
+65
-0
ci-scripts/xml_files/enb_usrp210_band7_build.xml
ci-scripts/xml_files/enb_usrp210_band7_build.xml
+54
-0
ci-scripts/xml_files/enb_usrp210_band7_epc_closure.xml
ci-scripts/xml_files/enb_usrp210_band7_epc_closure.xml
+47
-0
ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
+143
-0
ci-scripts/xml_files/enb_usrp210_band7_test_10mhz_tm1.xml
ci-scripts/xml_files/enb_usrp210_band7_test_10mhz_tm1.xml
+143
-0
ci-scripts/xml_files/enb_usrp210_band7_test_20mhz_tm1.xml
ci-scripts/xml_files/enb_usrp210_band7_test_20mhz_tm1.xml
+143
-0
ci-scripts/xml_files/enb_usrp210_band7_tracer.xml
ci-scripts/xml_files/enb_usrp210_band7_tracer.xml
+65
-0
ci-scripts/xml_files/if4p5_usrp210_band40_build.xml
ci-scripts/xml_files/if4p5_usrp210_band40_build.xml
+55
-0
ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml
ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml
+48
-0
ci-scripts/xml_files/if4p5_usrp210_band40_test_05mhz.xml
ci-scripts/xml_files/if4p5_usrp210_band40_test_05mhz.xml
+103
-0
ci-scripts/xml_files/if4p5_usrp210_band40_test_10mhz.xml
ci-scripts/xml_files/if4p5_usrp210_band40_test_10mhz.xml
+110
-0
ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz.xml
ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz.xml
+110
-0
ci-scripts/xml_files/if4p5_usrp210_band7_build.xml
ci-scripts/xml_files/if4p5_usrp210_band7_build.xml
+55
-0
ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml
ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml
+48
-0
ci-scripts/xml_files/if4p5_usrp210_band7_test_05mhz.xml
ci-scripts/xml_files/if4p5_usrp210_band7_test_05mhz.xml
+103
-0
ci-scripts/xml_files/if4p5_usrp210_band7_test_10mhz.xml
ci-scripts/xml_files/if4p5_usrp210_band7_test_10mhz.xml
+110
-0
ci-scripts/xml_files/if4p5_usrp210_band7_test_20mhz.xml
ci-scripts/xml_files/if4p5_usrp210_band7_test_20mhz.xml
+110
-0
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
+1
-1
openair1/PHY/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+2
-0
openair1/PHY/CODING/nr_segmentation.c
openair1/PHY/CODING/nr_segmentation.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+18
-7
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+48
-47
No files found.
ci-scripts/Jenkinsfile-tmp-ran
View file @
cc4182a3
...
@@ -27,6 +27,8 @@ def pythonExecutor = params.pythonExecutor
...
@@ -27,6 +27,8 @@ def pythonExecutor = params.pythonExecutor
// Location of the test XML file to be run
// Location of the test XML file to be run
def
testXMLFile
=
params
.
pythonTestXmlFile
def
testXMLFile
=
params
.
pythonTestXmlFile
def
mainPythonAllXmlFiles
=
""
def
buildStageStatus
=
true
// Name of the test stage
// Name of the test stage
def
testStageName
=
params
.
pipelineTestStageName
def
testStageName
=
params
.
pipelineTestStageName
...
@@ -53,6 +55,7 @@ def eNB_Repository
...
@@ -53,6 +55,7 @@ def eNB_Repository
def
eNB_Branch
def
eNB_Branch
def
eNB_CommitID
def
eNB_CommitID
def
eNB_AllowMergeRequestProcess
=
false
def
eNB_AllowMergeRequestProcess
=
false
def
eNB_TargetBranch
pipeline
{
pipeline
{
agent
{
agent
{
...
@@ -107,8 +110,16 @@ pipeline {
...
@@ -107,8 +110,16 @@ pipeline {
if
(
params
.
pythonTestXmlFile
==
null
)
{
if
(
params
.
pythonTestXmlFile
==
null
)
{
// picking default
// picking default
testXMLFile
=
'xml_files/enb_usrpB210_band7_50PRB.xml'
testXMLFile
=
'xml_files/enb_usrpB210_band7_50PRB.xml'
echo
"Test XML file(default): ${testXMLFile}"
mainPythonAllXmlFiles
+=
"--XMLTestFile="
+
testXMLFile
+
" "
}
else
{
}
else
{
echo
"Test XML file : ${testXMLFile}"
String
[]
myXmlTestSuite
=
testXMLFile
.
split
(
"\\r?\\n"
)
for
(
xmlFile
in
myXmlTestSuite
)
{
if
(
fileExists
(
"ci-scripts/"
+
xmlFile
))
{
mainPythonAllXmlFiles
+=
"--XMLTestFile="
+
xmlFile
+
" "
echo
"Test XML file : ${xmlFile}"
}
}
}
}
// If not present picking a default Stage Name
// If not present picking a default Stage Name
if
(
params
.
pipelineTestStageName
==
null
)
{
if
(
params
.
pipelineTestStageName
==
null
)
{
...
@@ -150,6 +161,14 @@ pipeline {
...
@@ -150,6 +161,14 @@ pipeline {
echo
"eNB_CommitID : ${eNB_CommitID}"
echo
"eNB_CommitID : ${eNB_CommitID}"
if
(
params
.
eNB_mergeRequest
!=
null
)
{
if
(
params
.
eNB_mergeRequest
!=
null
)
{
eNB_AllowMergeRequestProcess
=
params
.
eNB_mergeRequest
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
)
{
if
(
params
.
EPC_IPAddress
==
null
)
{
...
@@ -174,6 +193,13 @@ pipeline {
...
@@ -174,6 +193,13 @@ pipeline {
if
(
allParametersPresent
)
{
if
(
allParametersPresent
)
{
echo
"All parameters are present"
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
{
}
else
{
echo
"Some parameters are missing"
echo
"Some parameters are missing"
sh
"./ci-scripts/fail.sh"
sh
"./ci-scripts/fail.sh"
...
@@ -185,17 +211,25 @@ pipeline {
...
@@ -185,17 +211,25 @@ pipeline {
steps
{
steps
{
script
{
script
{
dir
(
'ci-scripts'
)
{
dir
(
'ci-scripts'
)
{
try
{
echo
"\u2705 \u001B[32m${testStageName}\u001B[0m"
echo
"\u2705 \u001B[32m${testStageName}\u001B[0m"
withCredentials
([
withCredentials
([
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.eNB_Credentials}"
,
usernameVariable:
'eNB_Username'
,
passwordVariable:
'eNB_Password'
],
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.eNB_Credentials}"
,
usernameVariable:
'eNB_Username'
,
passwordVariable:
'eNB_Password'
],
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.EPC_Credentials}"
,
usernameVariable:
'EPC_Username'
,
passwordVariable:
'EPC_Password'
],
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.EPC_Credentials}"
,
usernameVariable:
'EPC_Username'
,
passwordVariable:
'EPC_Password'
],
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.ADB_Credentials}"
,
usernameVariable:
'ADB_Username'
,
passwordVariable:
'ADB_Password'
]
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.ADB_Credentials}"
,
usernameVariable:
'ADB_Username'
,
passwordVariable:
'ADB_Password'
]
])
{
])
{
sh
"python3 main.py --mode=InitiateHtml --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --eNBTargetBranch=${eNB_TargetBranch} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} ${mainPythonAllXmlFiles}"
sh
"python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${testXMLFile}"
String
[]
myXmlTestSuite
=
testXMLFile
.
split
(
"\\r?\\n"
)
for
(
xmlFile
in
myXmlTestSuite
)
{
if
(
fileExists
(
xmlFile
))
{
try
{
sh
"python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --eNBTargetBranch=${eNB_TargetBranch} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${xmlFile}"
}
catch
(
Exception
e
)
{
currentBuild
.
result
=
'FAILURE'
buildStageStatus
=
false
}
}
}
}
}
catch
(
Exception
e
)
{
sh
"python3 main.py --mode=FinalizeHtml --finalStatus=${buildStageStatus} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password}"
currentBuild
.
result
=
'FAILURE'
}
}
}
}
}
}
...
@@ -327,7 +361,7 @@ pipeline {
...
@@ -327,7 +361,7 @@ pipeline {
}
}
if
(
fileExists
(
"ci-scripts/test_results.html"
))
{
if
(
fileExists
(
"ci-scripts/test_results.html"
))
{
sh
"mv ci-scripts/test_results.html test_results-${JOB_NAME}.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>#' 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"
archiveArtifacts
"test_results-${JOB_NAME}.html"
}
}
}
}
...
...
ci-scripts/active_net_interfaces.awk
0 → 100644
View file @
cc4182a3
#/*
# * 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
# */
/
inet
.
*
brd
/
{
print
"interfaceToUse="
$NF
"done"
}
ci-scripts/doGitLabMerge.sh
View file @
cc4182a3
#!/bin/bash
#!/bin/bash
#/*
# * 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
# */
function
usage
{
function
usage
{
echo
"OAI GitLab merge request applying script"
echo
"OAI GitLab merge request applying script"
...
@@ -83,6 +103,11 @@ esac
...
@@ -83,6 +103,11 @@ esac
done
done
if
[[
$TARGET_COMMIT_ID
==
"latest"
]]
then
TARGET_COMMIT_ID
=
`
git log
-n1
--pretty
=
format:%H origin/
$TARGET_BRANCH
`
fi
echo
"Source Branch is :
$SOURCE_BRANCH
"
echo
"Source Branch is :
$SOURCE_BRANCH
"
echo
"Source Commit ID is :
$SOURCE_COMMIT_ID
"
echo
"Source Commit ID is :
$SOURCE_COMMIT_ID
"
echo
"Target Branch is :
$TARGET_BRANCH
"
echo
"Target Branch is :
$TARGET_BRANCH
"
...
@@ -101,6 +126,7 @@ git config user.email "jenkins@openairinterface.org"
...
@@ -101,6 +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
git checkout
-f
$SOURCE_COMMIT_ID
git log
-n1
--pretty
=
format:
\"
%s
\"
>
.git/CI_COMMIT_MSG
git merge
--ff
$TARGET_COMMIT_ID
-m
"Temporary merge for CI"
git merge
--ff
$TARGET_COMMIT_ID
-m
"Temporary merge for CI"
...
...
ci-scripts/main.py
View file @
cc4182a3
...
@@ -42,6 +42,7 @@ ENB_PROCESS_OK = +1
...
@@ -42,6 +42,7 @@ ENB_PROCESS_OK = +1
ENB_PROCESS_SEG_FAULT
=
-
11
ENB_PROCESS_SEG_FAULT
=
-
11
ENB_PROCESS_ASSERTION
=
-
12
ENB_PROCESS_ASSERTION
=
-
12
ENB_PROCESS_REALTIME_ISSUE
=
-
13
ENB_PROCESS_REALTIME_ISSUE
=
-
13
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
=
-
14
HSS_PROCESS_FAILED
=
-
2
HSS_PROCESS_FAILED
=
-
2
HSS_PROCESS_OK
=
+
2
HSS_PROCESS_OK
=
+
2
MME_PROCESS_FAILED
=
-
3
MME_PROCESS_FAILED
=
-
3
...
@@ -58,6 +59,7 @@ import re # reg
...
@@ -58,6 +59,7 @@ import re # reg
import
pexpect
# pexpect
import
pexpect
# pexpect
import
time
# sleep
import
time
# sleep
import
os
import
os
import
subprocess
import
xml.etree.ElementTree
as
ET
import
xml.etree.ElementTree
as
ET
import
logging
import
logging
import
datetime
import
datetime
...
@@ -78,6 +80,7 @@ class SSHConnection():
...
@@ -78,6 +80,7 @@ class SSHConnection():
self
.
eNBBranch
=
''
self
.
eNBBranch
=
''
self
.
eNB_AllowMerge
=
False
self
.
eNB_AllowMerge
=
False
self
.
eNBCommitID
=
''
self
.
eNBCommitID
=
''
self
.
eNBTargetBranch
=
''
self
.
eNBUserName
=
''
self
.
eNBUserName
=
''
self
.
eNBPassword
=
''
self
.
eNBPassword
=
''
self
.
eNBSourceCodePath
=
''
self
.
eNBSourceCodePath
=
''
...
@@ -90,7 +93,8 @@ class SSHConnection():
...
@@ -90,7 +93,8 @@ class SSHConnection():
self
.
ADBUserName
=
''
self
.
ADBUserName
=
''
self
.
ADBPassword
=
''
self
.
ADBPassword
=
''
self
.
testCase_id
=
''
self
.
testCase_id
=
''
self
.
testXMLfile
=
''
self
.
testXMLfiles
=
[]
self
.
nbTestXMLfiles
=
0
self
.
desc
=
''
self
.
desc
=
''
self
.
Build_eNB_args
=
''
self
.
Build_eNB_args
=
''
self
.
Initialize_eNB_args
=
''
self
.
Initialize_eNB_args
=
''
...
@@ -101,13 +105,27 @@ class SSHConnection():
...
@@ -101,13 +105,27 @@ class SSHConnection():
self
.
iperf_args
=
''
self
.
iperf_args
=
''
self
.
iperf_packetloss_threshold
=
''
self
.
iperf_packetloss_threshold
=
''
self
.
iperf_profile
=
''
self
.
iperf_profile
=
''
self
.
nbMaxUEtoAttach
=
-
1
self
.
UEDevices
=
[]
self
.
UEDevices
=
[]
self
.
CatMDevices
=
[]
self
.
UEIPAddresses
=
[]
self
.
UEIPAddresses
=
[]
self
.
htmlFile
=
''
self
.
htmlFile
=
''
self
.
htmlHeaderCreated
=
False
self
.
htmlHeaderCreated
=
False
self
.
htmlFooterCreated
=
False
self
.
htmlFooterCreated
=
False
self
.
htmlUEConnected
=
0
self
.
htmlUEConnected
=
-
1
self
.
htmleNBFailureMsg
=
''
self
.
htmleNBFailureMsg
=
''
self
.
picocom_closure
=
False
self
.
idle_sleep_time
=
0
self
.
htmlTabRefs
=
[]
self
.
htmlTabNames
=
[]
self
.
htmlTabIcons
=
[]
self
.
finalStatus
=
False
self
.
eNBOsVersion
=
''
self
.
eNBKernelVersion
=
''
self
.
eNBUhdVersion
=
''
self
.
eNBCpuNb
=
''
self
.
eNBCpuModel
=
''
self
.
eNBCpuMHz
=
''
def
open
(
self
,
ipaddress
,
username
,
password
):
def
open
(
self
,
ipaddress
,
username
,
password
):
count
=
0
count
=
0
...
@@ -169,8 +187,9 @@ class SSHConnection():
...
@@ -169,8 +187,9 @@ class SSHConnection():
elif
self
.
sshresponse
==
2
:
elif
self
.
sshresponse
==
2
:
logging
.
debug
(
'
\u001B
[1;37;41m Unexpected TIMEOUT
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m Unexpected TIMEOUT
\u001B
[0m'
)
logging
.
debug
(
'Expected Line : '
+
expectedline
)
logging
.
debug
(
'Expected Line : '
+
expectedline
)
result
=
re
.
search
(
'ping |iperf '
,
str
(
commandline
))
result
=
re
.
search
(
'ping |iperf
|picocom
'
,
str
(
commandline
))
if
result
is
None
:
if
result
is
None
:
logging
.
debug
(
str
(
self
.
ssh
.
before
))
sys
.
exit
(
self
.
sshresponse
)
sys
.
exit
(
self
.
sshresponse
)
else
:
else
:
return
-
1
return
-
1
...
@@ -186,64 +205,87 @@ class SSHConnection():
...
@@ -186,64 +205,87 @@ class SSHConnection():
if
self
.
sshresponse
==
0
:
if
self
.
sshresponse
==
0
:
pass
pass
elif
self
.
sshresponse
==
1
:
elif
self
.
sshresponse
==
1
:
logging
.
debug
(
'
\u001B
[1;37;41m Unexpected TIMEOUT
\u001B
[0m'
)
if
not
self
.
picocom_closure
:
logging
.
debug
(
'
\u001B
[1;37;41m Unexpected TIMEOUT during closing
\u001B
[0m'
)
else
:
else
:
logging
.
debug
(
'
\u001B
[1;37;41m Unexpected Others
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m Unexpected Others
during closing
\u001B
[0m'
)
def
copyin
(
self
,
ipaddress
,
username
,
password
,
source
,
destination
):
def
copyin
(
self
,
ipaddress
,
username
,
password
,
source
,
destination
):
count
=
0
copy_status
=
False
logging
.
debug
(
'scp '
+
username
+
'@'
+
ipaddress
+
':'
+
source
+
' '
+
destination
)
logging
.
debug
(
'scp '
+
username
+
'@'
+
ipaddress
+
':'
+
source
+
' '
+
destination
)
scp_spawn
=
pexpect
.
spawn
(
'scp '
+
username
+
'@'
+
ipaddress
+
':'
+
source
+
' '
+
destination
,
timeout
=
5
)
while
count
<
10
:
scp_response
=
scp_spawn
.
expect
([
'Are you sure you want to continue connecting (yes/no)?'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
scp_spawn
=
pexpect
.
spawn
(
'scp '
+
username
+
'@'
+
ipaddress
+
':'
+
source
+
' '
+
destination
,
timeout
=
100
)
if
scp_response
==
0
:
scp_response
=
scp_spawn
.
expect
([
'Are you sure you want to continue connecting (yes/no)?'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
scp_spawn
.
sendline
(
'yes'
)
scp_spawn
.
expect
(
'password:'
)
scp_spawn
.
sendline
(
password
)
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
if
scp_response
==
0
:
if
scp_response
==
0
:
pass
scp_spawn
.
sendline
(
'yes'
)
else
:
scp_spawn
.
expect
(
'password:'
)
logging
.
debug
(
'1 - scp_response = '
+
str
(
scp_response
))
scp_spawn
.
sendline
(
password
)
sys
.
exit
(
'SCP failed'
)
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
elif
scp_response
==
1
:
if
scp_response
==
0
:
scp_spawn
.
sendline
(
password
)
count
=
10
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
copy_status
=
True
if
scp_response
==
0
or
scp_response
==
3
:
else
:
pass
logging
.
debug
(
'1 - scp_response = '
+
str
(
scp_response
))
elif
scp_response
==
1
:
scp_spawn
.
sendline
(
password
)
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
if
scp_response
==
0
or
scp_response
==
3
:
count
=
10
copy_status
=
True
else
:
logging
.
debug
(
'2 - scp_response = '
+
str
(
scp_response
))
elif
scp_response
==
2
:
count
=
10
copy_status
=
True
else
:
else
:
logging
.
debug
(
'2 - scp_response = '
+
str
(
scp_response
))
logging
.
debug
(
'3 - scp_response = '
+
str
(
scp_response
))
sys
.
exit
(
'SCP failed'
)
# adding a tempo when failure
elif
scp_response
==
2
:
if
not
copy_status
:
pass
time
.
sleep
(
1
)
count
+=
1
if
copy_status
:
return
0
else
:
else
:
logging
.
debug
(
'3 - scp_response = '
+
str
(
scp_response
))
return
-
1
sys
.
exit
(
'SCP failed'
)
def
copyout
(
self
,
ipaddress
,
username
,
password
,
source
,
destination
):
def
copyout
(
self
,
ipaddress
,
username
,
password
,
source
,
destination
):
count
=
0
copy_status
=
False
logging
.
debug
(
'scp '
+
source
+
' '
+
username
+
'@'
+
ipaddress
+
':'
+
destination
)
logging
.
debug
(
'scp '
+
source
+
' '
+
username
+
'@'
+
ipaddress
+
':'
+
destination
)
scp_spawn
=
pexpect
.
spawn
(
'scp '
+
source
+
' '
+
username
+
'@'
+
ipaddress
+
':'
+
destination
,
timeout
=
5
)
while
count
<
4
:
scp_response
=
scp_spawn
.
expect
([
'Are you sure you want to continue connecting (yes/no)?'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
scp_spawn
=
pexpect
.
spawn
(
'scp '
+
source
+
' '
+
username
+
'@'
+
ipaddress
+
':'
+
destination
,
timeout
=
100
)
if
scp_response
==
0
:
scp_response
=
scp_spawn
.
expect
([
'Are you sure you want to continue connecting (yes/no)?'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
scp_spawn
.
sendline
(
'yes'
)
scp_spawn
.
expect
(
'password:'
)
scp_spawn
.
sendline
(
password
)
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
if
scp_response
==
0
:
if
scp_response
==
0
:
pass
scp_spawn
.
sendline
(
'yes'
)
else
:
scp_spawn
.
expect
(
'password:'
)
logging
.
debug
(
'1 - scp_response = '
+
str
(
scp_response
))
scp_spawn
.
sendline
(
password
)
sys
.
exit
(
'SCP failed'
)
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
elif
scp_response
==
1
:
if
scp_response
==
0
:
scp_spawn
.
sendline
(
password
)
count
=
10
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
copy_status
=
True
if
scp_response
==
0
or
scp_response
==
3
:
else
:
pass
logging
.
debug
(
'1 - scp_response = '
+
str
(
scp_response
))
elif
scp_response
==
1
:
scp_spawn
.
sendline
(
password
)
scp_response
=
scp_spawn
.
expect
([
'\$'
,
'Permission denied'
,
'password:'
,
pexpect
.
EOF
,
pexpect
.
TIMEOUT
])
if
scp_response
==
0
or
scp_response
==
3
:
count
=
10
copy_status
=
True
else
:
logging
.
debug
(
'2 - scp_response = '
+
str
(
scp_response
))
elif
scp_response
==
2
:
count
=
10
copy_status
=
True
else
:
else
:
logging
.
debug
(
'2 - scp_response = '
+
str
(
scp_response
))
logging
.
debug
(
'3 - scp_response = '
+
str
(
scp_response
))
sys
.
exit
(
'SCP failed'
)
# adding a tempo when failure
elif
scp_response
==
2
:
if
not
copy_status
:
time
.
sleep
(
1
)
count
+=
1
if
copy_status
:
pass
pass
else
:
else
:
logging
.
debug
(
'3 - scp_response = '
+
str
(
scp_response
))
sys
.
exit
(
'SCP failed'
)
sys
.
exit
(
'SCP failed'
)
def
BuildeNB
(
self
):
def
BuildeNB
(
self
):
...
@@ -264,17 +306,21 @@ class SSHConnection():
...
@@ -264,17 +306,21 @@ class SSHConnection():
# if the branch is not develop, then it is a merge request and we need to do
# 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
# the potential merge. Note that merge conflicts should already been checked earlier
if
(
self
.
eNB_AllowMerge
):
if
(
self
.
eNB_AllowMerge
):
if
(
self
.
eNBBranch
!=
'develop'
)
and
(
self
.
eNBBranch
!=
'origin/develop'
):
if
self
.
eNBTargetBranch
==
''
:
self
.
command
(
'git merge --ff origin/develop -m "Temporary merge for CI"'
,
'\$'
,
5
)
if
(
self
.
eNBBranch
!=
'develop'
)
and
(
self
.
eNBBranch
!=
'origin/develop'
):
self
.
command
(
'git merge --ff origin/develop -m "Temporary merge for CI"'
,
'\$'
,
5
)
else
:
logging
.
debug
(
'Merging with the target branch: '
+
self
.
eNBTargetBranch
)
self
.
command
(
'git merge --ff origin/'
+
self
.
eNBTargetBranch
+
' -m "Temporary merge for CI"'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# no need to remove in log (git clean did the trick)
# no need to remove in log (git clean did the trick)
self
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_eNB_args
+
' 2>&1 | stdbuf -o0 tee -a compile_oai_enb.log'
,
'Bypassing the Tests'
,
600
)
self
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_eNB_args
+
' 2>&1 | stdbuf -o0 tee -a compile_oai_enb.log'
,
'Bypassing the Tests'
,
600
)
self
.
command
(
'mkdir -p build_log_'
+
SSH
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mkdir -p build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv log/* '
+
'build_log_'
+
SSH
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv log/* '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv compile_oai_enb.log '
+
'build_log_'
+
SSH
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv compile_oai_enb.log '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
# Workaround to run with develop-nr
# Workaround to run with develop-nr
self
.
command
(
'if [ -e ran_build ]; then cp -rf ran_build lte_build_oai; fi'
,
'\$'
,
30
)
self
.
command
(
'if [ -e ran_build ]; then cp -rf ran_build lte_build_oai; fi'
,
'\$'
,
30
)
self
.
close
()
self
.
close
()
...
@@ -290,7 +336,7 @@ class SSHConnection():
...
@@ -290,7 +336,7 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./run_hss 2>&1 | stdbuf -o0 awk
\'
{ print strftime("[%Y/%m/%d %H:%M:%S] ",systime()) $0 }
\'
| stdbuf -o0 tee -a hss_'
+
SSH
.
testCase_id
+
'.log &'
,
'Core state: 2 -> 3'
,
35
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./run_hss 2>&1 | stdbuf -o0 awk
\'
{ print strftime("[%Y/%m/%d %H:%M:%S] ",systime()) $0 }
\'
| stdbuf -o0 tee -a hss_'
+
self
.
testCase_id
+
'.log &'
,
'Core state: 2 -> 3'
,
35
)
else
:
else
:
logging
.
debug
(
'Using the ltebox simulated HSS'
)
logging
.
debug
(
'Using the ltebox simulated HSS'
)
self
.
command
(
'if [ -d '
+
self
.
EPCSourceCodePath
+
'/scripts ]; then echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf '
+
self
.
EPCSourceCodePath
+
'/scripts ; fi'
,
'\$'
,
5
)
self
.
command
(
'if [ -d '
+
self
.
EPCSourceCodePath
+
'/scripts ]; then echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf '
+
self
.
EPCSourceCodePath
+
'/scripts ; fi'
,
'\$'
,
5
)
...
@@ -316,7 +362,7 @@ class SSHConnection():
...
@@ -316,7 +362,7 @@ class SSHConnection():
logging
.
debug
(
'
\u001B
[1;37;41m Hostname Not Found!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m Hostname Not Found!
\u001B
[0m'
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
host_name
=
result
.
group
(
'host_name'
)
host_name
=
result
.
group
(
'host_name'
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./run_mme 2>&1 | stdbuf -o0 tee -a mme_'
+
SSH
.
testCase_id
+
'.log &'
,
'MME app initialization complete'
,
100
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./run_mme 2>&1 | stdbuf -o0 tee -a mme_'
+
self
.
testCase_id
+
'.log &'
,
'MME app initialization complete'
,
100
)
else
:
else
:
self
.
command
(
'cd /opt/ltebox/tools'
,
'\$'
,
5
)
self
.
command
(
'cd /opt/ltebox/tools'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./start_mme'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./start_mme'
,
'\$'
,
5
)
...
@@ -332,7 +378,7 @@ class SSHConnection():
...
@@ -332,7 +378,7 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./run_spgw 2>&1 | stdbuf -o0 tee -a spgw_'
+
SSH
.
testCase_id
+
'.log &'
,
'Initializing SPGW-APP task interface: DONE'
,
30
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./run_spgw 2>&1 | stdbuf -o0 tee -a spgw_'
+
self
.
testCase_id
+
'.log &'
,
'Initializing SPGW-APP task interface: DONE'
,
30
)
else
:
else
:
self
.
command
(
'cd /opt/ltebox/tools'
,
'\$'
,
5
)
self
.
command
(
'cd /opt/ltebox/tools'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./start_xGw'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./start_xGw'
,
'\$'
,
5
)
...
@@ -347,8 +393,20 @@ class SSHConnection():
...
@@ -347,8 +393,20 @@ class SSHConnection():
pStatus
=
self
.
CheckProcessExist
(
initialize_eNB_flag
)
pStatus
=
self
.
CheckProcessExist
(
initialize_eNB_flag
)
if
(
pStatus
<
0
):
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
self
.
Initialize_eNB_args
,
'KO'
,
pStatus
)
self
.
CreateHtmlTestRow
(
self
.
Initialize_eNB_args
,
'KO'
,
pStatus
)
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
# If tracer options is on, running tshark on EPC side and capture traffic b/ EPC and eNB
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
not
None
:
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
command
(
'ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"'
,
'\$'
,
5
)
result
=
re
.
search
(
'interfaceToUse=(?P<eth_interface>[a-zA-Z0-9\-\_]+)done'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
eth_interface
=
result
.
group
(
'eth_interface'
)
logging
.
debug
(
'
\u001B
[1m Launching tshark on interface '
+
eth_interface
+
'
\u001B
[0m'
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S rm -f /tmp/enb_'
+
self
.
testCase_id
+
'_s1log.pcap'
,
'\$'
,
5
)
self
.
command
(
'echo $USER; nohup sudo tshark -f "host '
+
self
.
eNBIPAddress
+
'" -i '
+
eth_interface
+
' -w /tmp/enb_'
+
self
.
testCase_id
+
'_s1log.pcap > /tmp/tshark.log 2>&1 &'
,
self
.
EPCUserName
,
5
)
self
.
close
()
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
# Initialize_eNB_args usually start with -O and followed by the location in repository
# Initialize_eNB_args usually start with -O and followed by the location in repository
...
@@ -356,6 +414,14 @@ class SSHConnection():
...
@@ -356,6 +414,14 @@ class SSHConnection():
extIdx
=
full_config_file
.
find
(
'.conf'
)
extIdx
=
full_config_file
.
find
(
'.conf'
)
if
(
extIdx
>
0
):
if
(
extIdx
>
0
):
extra_options
=
full_config_file
[
extIdx
+
5
:]
extra_options
=
full_config_file
[
extIdx
+
5
:]
# if tracer options is on, compiling and running T Tracer
result
=
re
.
search
(
'T_stdout'
,
str
(
extra_options
))
if
result
is
not
None
:
logging
.
debug
(
'
\u001B
[1m Compiling and launching T Tracer
\u001B
[0m'
)
self
.
command
(
'cd common/utils/T/tracer'
,
'\$'
,
5
)
self
.
command
(
'make'
,
'\$'
,
10
)
self
.
command
(
'echo $USER; nohup ./record -d ../T_messages.txt -o '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'_record.raw -ON -off VCD -off HEAVY -off LEGACY_GROUP_TRACE -off LEGACY_GROUP_DEBUG > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'_record.log 2>&1 &'
,
self
.
eNBUserName
,
5
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
full_config_file
=
full_config_file
[:
extIdx
+
5
]
full_config_file
=
full_config_file
[:
extIdx
+
5
]
config_path
,
config_file
=
os
.
path
.
split
(
full_config_file
)
config_path
,
config_file
=
os
.
path
.
split
(
full_config_file
)
else
:
else
:
...
@@ -372,26 +438,42 @@ class SSHConnection():
...
@@ -372,26 +438,42 @@ class SSHConnection():
# Launch eNB with the modified config file
# Launch eNB with the modified config file
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./lte_build_oai/build/lte-softmodem -O '
+
self
.
eNBSourceCodePath
+
'/'
+
ci_full_config_file
+
extra_options
+
'" > ./my-lte-softmodem-run'
+
str
(
SSH
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./lte_build_oai/build/lte-softmodem -O '
+
self
.
eNBSourceCodePath
+
'/'
+
ci_full_config_file
+
extra_options
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
SSH
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf enb_'
+
SSH
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S -E daemon --inherit --unsafe --name=enb'
+
str
(
SSH
.
eNB_instance
)
+
'_daemon --chdir='
+
self
.
eNBSourceCodePath
+
'/cmake_targets -o '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
SSH
.
testCase_id
+
'.log ./my-lte-softmodem-run'
+
str
(
SSH
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S -E daemon --inherit --unsafe --name=enb'
+
str
(
self
.
eNB_instance
)
+
'_daemon --chdir='
+
self
.
eNBSourceCodePath
+
'/cmake_targets -o '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
if
not
rruCheck
:
if
not
rruCheck
:
self
.
eNBLogFile
=
'enb_'
+
SSH
.
testCase_id
+
'.log'
self
.
eNBLogFile
=
'enb_'
+
self
.
testCase_id
+
'.log'
time
.
sleep
(
6
)
time
.
sleep
(
6
)
doLoop
=
True
doLoop
=
True
loopCounter
=
10
loopCounter
=
10
while
(
doLoop
):
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
loopCounter
=
loopCounter
-
1
if
(
loopCounter
==
0
):
if
(
loopCounter
==
0
):
# In case of T tracer recording, we may need to kill it
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
not
None
:
self
.
command
(
'killall --signal SIGKILL record'
,
'\$'
,
5
)
self
.
close
()
doLoop
=
False
doLoop
=
False
logging
.
error
(
'
\u001B
[1;37;41m eNB logging system did not show got sync!
\u001B
[0m'
)
logging
.
error
(
'
\u001B
[1;37;41m eNB logging system did not show got sync!
\u001B
[0m'
)
self
.
CreateHtmlTestRow
(
'-O '
+
config_file
+
extra_options
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
'-O '
+
config_file
+
extra_options
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtmlTabFooter
(
False
)
self
.
close
()
# In case of T tracer recording, we need to kill tshark on EPC side
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
not
None
:
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
logging
.
debug
(
'
\u001B
[1m Stopping tshark
\u001B
[0m'
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S killall --signal SIGKILL tshark'
,
'\$'
,
5
)
self
.
close
()
time
.
sleep
(
1
)
pcap_log_file
=
'enb_'
+
self
.
testCase_id
+
'_s1log.pcap'
copyin_res
=
self
.
copyin
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
,
'/tmp/'
+
pcap_log_file
,
'.'
)
if
(
copyin_res
==
0
):
self
.
copyout
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
pcap_log_file
,
self
.
eNBSourceCodePath
+
'/cmake_targets/.'
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
else
:
else
:
self
.
command
(
'stdbuf -o0 cat enb_'
+
SSH
.
testCase_id
+
'.log | egrep
--color=never -i "wait|sync"'
,
'\$'
,
4
)
self
.
command
(
'stdbuf -o0 cat enb_'
+
self
.
testCase_id
+
'.log | egrep --text
--color=never -i "wait|sync"'
,
'\$'
,
4
)
if
rruCheck
:
if
rruCheck
:
result
=
re
.
search
(
'wait RUs'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'wait RUs'
,
str
(
self
.
ssh
.
before
))
else
:
else
:
...
@@ -427,7 +509,7 @@ class SSHConnection():
...
@@ -427,7 +509,7 @@ class SSHConnection():
sys
.
exit
(
'Insufficient Parameter'
)
sys
.
exit
(
'Insufficient Parameter'
)
multi_jobs
=
[]
multi_jobs
=
[]
for
device_id
in
self
.
UEDevices
:
for
device_id
in
self
.
UEDevices
:
p
=
Process
(
target
=
SSH
.
InitializeUE_common
,
args
=
(
device_id
,))
p
=
Process
(
target
=
self
.
InitializeUE_common
,
args
=
(
device_id
,))
p
.
daemon
=
True
p
.
daemon
=
True
p
.
start
()
p
.
start
()
multi_jobs
.
append
(
p
)
multi_jobs
.
append
(
p
)
...
@@ -435,6 +517,109 @@ class SSHConnection():
...
@@ -435,6 +517,109 @@ class SSHConnection():
job
.
join
()
job
.
join
()
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
def
checkDevTTYisUnlocked
(
self
):
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
count
=
0
while
count
<
5
:
self
.
command
(
'echo '
+
self
.
ADBPassword
+
' | sudo -S lsof | grep ttyUSB0'
,
'\$'
,
10
)
result
=
re
.
search
(
'picocom'
,
str
(
self
.
ssh
.
before
))
if
result
is
None
:
count
=
10
else
:
time
.
sleep
(
5
)
count
=
count
+
1
self
.
close
()
def
InitializeCatM
(
self
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
self
.
picocom_closure
=
True
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
# dummy call to start a sudo session. The picocom command does NOT handle well the `sudo -S`
self
.
command
(
'echo '
+
self
.
ADBPassword
+
' | sudo -S ls'
,
'\$'
,
10
)
self
.
command
(
'sudo picocom --baud 921600 --flow n --databits 8 /dev/ttyUSB0'
,
'Terminal ready'
,
10
)
time
.
sleep
(
1
)
# Calling twice AT to clear all buffers
self
.
command
(
'AT'
,
'OK|ERROR'
,
5
)
self
.
command
(
'AT'
,
'OK'
,
5
)
# Disabling the Radio
self
.
command
(
'AT+CFUN=0'
,
'OK'
,
5
)
logging
.
debug
(
'
\u001B
[1m Cellular Functionality disabled
\u001B
[0m'
)
# Checking if auto-attach is enabled
self
.
command
(
'AT^AUTOATT?'
,
'OK'
,
5
)
result
=
re
.
search
(
'AUTOATT: (?P<state>[0-9\-]+)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
.
group
(
'state'
)
is
not
None
:
autoAttachState
=
int
(
result
.
group
(
'state'
))
if
autoAttachState
is
not
None
:
if
autoAttachState
==
0
:
self
.
command
(
'AT^AUTOATT=1'
,
'OK'
,
5
)
logging
.
debug
(
'
\u001B
[1m Auto-Attach enabled
\u001B
[0m'
)
else
:
logging
.
debug
(
'
\u001B
[1;37;41m Could not check Auto-Attach!
\u001B
[0m'
)
# Force closure of picocom but device might still be locked
self
.
close
()
self
.
picocom_closure
=
False
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
checkDevTTYisUnlocked
()
def
TerminateCatM
(
self
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
self
.
picocom_closure
=
True
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
# dummy call to start a sudo session. The picocom command does NOT handle well the `sudo -S`
self
.
command
(
'echo '
+
self
.
ADBPassword
+
' | sudo -S ls'
,
'\$'
,
10
)
self
.
command
(
'sudo picocom --baud 921600 --flow n --databits 8 /dev/ttyUSB0'
,
'Terminal ready'
,
10
)
time
.
sleep
(
1
)
# Calling twice AT to clear all buffers
self
.
command
(
'AT'
,
'OK|ERROR'
,
5
)
self
.
command
(
'AT'
,
'OK'
,
5
)
# Disabling the Radio
self
.
command
(
'AT+CFUN=0'
,
'OK'
,
5
)
logging
.
debug
(
'
\u001B
[1m Cellular Functionality disabled
\u001B
[0m'
)
self
.
close
()
self
.
picocom_closure
=
False
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
checkDevTTYisUnlocked
()
def
AttachCatM
(
self
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
self
.
picocom_closure
=
True
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
# dummy call to start a sudo session. The picocom command does NOT handle well the `sudo -S`
self
.
command
(
'echo '
+
self
.
ADBPassword
+
' | sudo -S ls'
,
'\$'
,
10
)
self
.
command
(
'sudo picocom --baud 921600 --flow n --databits 8 /dev/ttyUSB0'
,
'Terminal ready'
,
10
)
time
.
sleep
(
1
)
# Calling twice AT to clear all buffers
self
.
command
(
'AT'
,
'OK|ERROR'
,
5
)
self
.
command
(
'AT'
,
'OK'
,
5
)
# Enabling the Radio
self
.
command
(
'AT+CFUN=1'
,
'SIMSTORE,READY'
,
5
)
logging
.
debug
(
'
\u001B
[1m Cellular Functionality enabled
\u001B
[0m'
)
time
.
sleep
(
4
)
# We should check if we register
count
=
0
while
count
<
3
:
self
.
command
(
'AT+CEREG?'
,
'OK'
,
5
)
result
=
re
.
search
(
'CEREG: 2,(?P<state>[0-9\-]+)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
mDataConnectionState
=
int
(
result
.
group
(
'state'
))
if
mDataConnectionState
is
not
None
:
logging
.
debug
(
'+CEREG: 2,'
+
str
(
mDataConnectionState
))
else
:
logging
.
debug
(
str
(
self
.
ssh
.
before
))
count
=
count
+
1
time
.
sleep
(
1
)
self
.
close
()
self
.
picocom_closure
=
False
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
checkDevTTYisUnlocked
()
def
AttachUE_common
(
self
,
device_id
,
statusQueue
,
lock
):
def
AttachUE_common
(
self
,
device_id
,
statusQueue
,
lock
):
try
:
try
:
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
...
@@ -491,22 +676,25 @@ class SSHConnection():
...
@@ -491,22 +676,25 @@ class SSHConnection():
if
(
pStatus
<
0
):
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
multi_jobs
=
[]
multi_jobs
=
[]
status_queue
=
SimpleQueue
()
status_queue
=
SimpleQueue
()
lock
=
Lock
()
lock
=
Lock
()
nb_ue_to_connect
=
0
for
device_id
in
self
.
UEDevices
:
for
device_id
in
self
.
UEDevices
:
p
=
Process
(
target
=
SSH
.
AttachUE_common
,
args
=
(
device_id
,
status_queue
,
lock
,))
if
(
self
.
nbMaxUEtoAttach
==
-
1
)
or
(
nb_ue_to_connect
<
self
.
nbMaxUEtoAttach
):
p
.
daemon
=
True
p
=
Process
(
target
=
self
.
AttachUE_common
,
args
=
(
device_id
,
status_queue
,
lock
,))
p
.
start
()
p
.
daemon
=
True
multi_jobs
.
append
(
p
)
p
.
start
()
multi_jobs
.
append
(
p
)
nb_ue_to_connect
=
nb_ue_to_connect
+
1
for
job
in
multi_jobs
:
for
job
in
multi_jobs
:
job
.
join
()
job
.
join
()
if
(
status_queue
.
empty
()):
if
(
status_queue
.
empty
()):
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
sys
.
exit
(
1
)
sys
.
exit
(
1
)
else
:
else
:
...
@@ -519,16 +707,20 @@ class SSHConnection():
...
@@ -519,16 +707,20 @@ class SSHConnection():
device_id
=
status_queue
.
get
()
device_id
=
status_queue
.
get
()
message
=
status_queue
.
get
()
message
=
status_queue
.
get
()
if
(
count
<
0
):
if
(
count
<
0
):
html_cell
=
"<pre>UE ("
+
device_id
+
")
\n
"
+
message
+
"</pre>"
html_cell
=
'<pre style="background-color:white">UE ('
+
device_id
+
')
\n
'
+
message
+
'</pre>'
else
:
else
:
html_cell
=
"<pre>UE ("
+
device_id
+
")
\n
"
+
message
+
' in '
+
str
(
count
+
2
)
+
' seconds</pre>'
html_cell
=
'<pre style="background-color:white">UE ('
+
device_id
+
')
\n
'
+
message
+
' in '
+
str
(
count
+
2
)
+
' seconds</pre>'
html_queue
.
put
(
html_cell
)
html_queue
.
put
(
html_cell
)
if
(
attach_status
):
if
(
attach_status
):
self
.
CreateHtmlTestRowQueue
(
'N/A'
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
CreateHtmlTestRowQueue
(
'N/A'
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
not
None
:
logging
.
debug
(
'Waiting 5 seconds to fill up record file'
)
time
.
sleep
(
5
)
else
:
else
:
self
.
CreateHtmlTestRowQueue
(
'N/A'
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
CreateHtmlTestRowQueue
(
'N/A'
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
def
DetachUE_common
(
self
,
device_id
):
def
DetachUE_common
(
self
,
device_id
):
...
@@ -549,17 +741,21 @@ class SSHConnection():
...
@@ -549,17 +741,21 @@ class SSHConnection():
if
(
pStatus
<
0
):
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
multi_jobs
=
[]
multi_jobs
=
[]
for
device_id
in
self
.
UEDevices
:
for
device_id
in
self
.
UEDevices
:
p
=
Process
(
target
=
SSH
.
DetachUE_common
,
args
=
(
device_id
,))
p
=
Process
(
target
=
self
.
DetachUE_common
,
args
=
(
device_id
,))
p
.
daemon
=
True
p
.
daemon
=
True
p
.
start
()
p
.
start
()
multi_jobs
.
append
(
p
)
multi_jobs
.
append
(
p
)
for
job
in
multi_jobs
:
for
job
in
multi_jobs
:
job
.
join
()
job
.
join
()
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
not
None
:
logging
.
debug
(
'Waiting 5 seconds to fill up record file'
)
time
.
sleep
(
5
)
def
RebootUE_common
(
self
,
device_id
):
def
RebootUE_common
(
self
,
device_id
):
try
:
try
:
...
@@ -608,11 +804,11 @@ class SSHConnection():
...
@@ -608,11 +804,11 @@ class SSHConnection():
pStatus
=
self
.
CheckProcessExist
(
initialize_eNB_flag
)
pStatus
=
self
.
CheckProcessExist
(
initialize_eNB_flag
)
if
(
pStatus
<
0
):
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
multi_jobs
=
[]
multi_jobs
=
[]
for
device_id
in
self
.
UEDevices
:
for
device_id
in
self
.
UEDevices
:
p
=
Process
(
target
=
SSH
.
RebootUE_common
,
args
=
(
device_id
,))
p
=
Process
(
target
=
self
.
RebootUE_common
,
args
=
(
device_id
,))
p
.
daemon
=
True
p
.
daemon
=
True
p
.
start
()
p
.
start
()
multi_jobs
.
append
(
p
)
multi_jobs
.
append
(
p
)
...
@@ -633,6 +829,19 @@ class SSHConnection():
...
@@ -633,6 +829,19 @@ class SSHConnection():
sys
.
exit
(
1
)
sys
.
exit
(
1
)
self
.
close
()
self
.
close
()
def
GetAllCatMDevices
(
self
,
terminate_ue_flag
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
self
.
open
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
)
self
.
command
(
'lsusb | egrep "Future Technology Devices International, Ltd FT2232C" | sed -e "s#:.*##" -e "s# #_#g"'
,
'\$'
,
15
)
self
.
CatMDevices
=
re
.
findall
(
"
\\\\
r
\\\\
n([A-Za-z0-9_]+)"
,
str
(
self
.
ssh
.
before
))
if
terminate_ue_flag
==
False
:
if
len
(
self
.
CatMDevices
)
==
0
:
logging
.
debug
(
'
\u001B
[1;37;41m CAT-M UE Not Found!
\u001B
[0m'
)
sys
.
exit
(
1
)
self
.
close
()
def
GetAllUEIPAddresses
(
self
):
def
GetAllUEIPAddresses
(
self
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
Usage
()
Usage
()
...
@@ -679,7 +888,7 @@ class SSHConnection():
...
@@ -679,7 +888,7 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
ping_status
=
self
.
command
(
'stdbuf -o0 ping '
+
self
.
ping_args
+
' '
+
UE_IPAddress
+
' 2>&1 | stdbuf -o0 tee -a ping_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
ping_status
=
self
.
command
(
'stdbuf -o0 ping '
+
self
.
ping_args
+
' '
+
UE_IPAddress
+
' 2>&1 | stdbuf -o0 tee -a ping_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
# TIMEOUT CASE
# TIMEOUT CASE
if
ping_status
<
0
:
if
ping_status
<
0
:
message
=
'Ping with UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT!'
message
=
'Ping with UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT!'
...
@@ -747,12 +956,12 @@ class SSHConnection():
...
@@ -747,12 +956,12 @@ class SSHConnection():
pStatus
=
self
.
CheckProcessExist
(
initialize_eNB_flag
)
pStatus
=
self
.
CheckProcessExist
(
initialize_eNB_flag
)
if
(
pStatus
<
0
):
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
if
(
ueIpStatus
<
0
):
if
(
ueIpStatus
<
0
):
self
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
UE_IP_ADDRESS_ISSUE
)
self
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
UE_IP_ADDRESS_ISSUE
)
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
multi_jobs
=
[]
multi_jobs
=
[]
i
=
0
i
=
0
...
@@ -760,7 +969,7 @@ class SSHConnection():
...
@@ -760,7 +969,7 @@ class SSHConnection():
status_queue
=
SimpleQueue
()
status_queue
=
SimpleQueue
()
for
UE_IPAddress
in
self
.
UEIPAddresses
:
for
UE_IPAddress
in
self
.
UEIPAddresses
:
device_id
=
self
.
UEDevices
[
i
]
device_id
=
self
.
UEDevices
[
i
]
p
=
Process
(
target
=
SSH
.
Ping_common
,
args
=
(
lock
,
UE_IPAddress
,
device_id
,
status_queue
,))
p
=
Process
(
target
=
self
.
Ping_common
,
args
=
(
lock
,
UE_IPAddress
,
device_id
,
status_queue
,))
p
.
daemon
=
True
p
.
daemon
=
True
p
.
start
()
p
.
start
()
multi_jobs
.
append
(
p
)
multi_jobs
.
append
(
p
)
...
@@ -771,7 +980,7 @@ class SSHConnection():
...
@@ -771,7 +980,7 @@ class SSHConnection():
if
(
status_queue
.
empty
()):
if
(
status_queue
.
empty
()):
self
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
else
:
else
:
ping_status
=
True
ping_status
=
True
...
@@ -783,14 +992,14 @@ class SSHConnection():
...
@@ -783,14 +992,14 @@ class SSHConnection():
device_id
=
status_queue
.
get
()
device_id
=
status_queue
.
get
()
ip_addr
=
status_queue
.
get
()
ip_addr
=
status_queue
.
get
()
message
=
status_queue
.
get
()
message
=
status_queue
.
get
()
html_cell
=
"<pre>UE ("
+
device_id
+
")
\n
IP Address : "
+
ip_addr
+
"
\n
"
+
message
+
"</pre>"
html_cell
=
'<pre style="background-color:white">UE ('
+
device_id
+
')
\n
IP Address : '
+
ip_addr
+
'
\n
'
+
message
+
'</pre>'
html_queue
.
put
(
html_cell
)
html_queue
.
put
(
html_cell
)
if
(
ping_status
):
if
(
ping_status
):
self
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
else
:
else
:
self
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
def
Iperf_ComputeTime
(
self
):
def
Iperf_ComputeTime
(
self
):
...
@@ -806,11 +1015,11 @@ class SSHConnection():
...
@@ -806,11 +1015,11 @@ class SSHConnection():
logging
.
debug
(
'
\u001B
[1;37;41m Iperf bandwidth Not Found!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m Iperf bandwidth Not Found!
\u001B
[0m'
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
iperf_bandwidth
=
result
.
group
(
'iperf_bandwidth'
)
iperf_bandwidth
=
result
.
group
(
'iperf_bandwidth'
)
if
SSH
.
iperf_profile
==
'balanced'
:
if
self
.
iperf_profile
==
'balanced'
:
iperf_bandwidth_new
=
float
(
iperf_bandwidth
)
/
ue_num
iperf_bandwidth_new
=
float
(
iperf_bandwidth
)
/
ue_num
if
SSH
.
iperf_profile
==
'single-ue'
:
if
self
.
iperf_profile
==
'single-ue'
:
iperf_bandwidth_new
=
float
(
iperf_bandwidth
)
iperf_bandwidth_new
=
float
(
iperf_bandwidth
)
if
SSH
.
iperf_profile
==
'unbalanced'
:
if
self
.
iperf_profile
==
'unbalanced'
:
# residual is 2% of max bw
# residual is 2% of max bw
residualBW
=
float
(
iperf_bandwidth
)
/
50
residualBW
=
float
(
iperf_bandwidth
)
/
50
if
idx
==
0
:
if
idx
==
0
:
...
@@ -826,7 +1035,7 @@ class SSHConnection():
...
@@ -826,7 +1035,7 @@ class SSHConnection():
return
result
return
result
def
Iperf_analyzeV2TCPOutput
(
self
,
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
iperf_real_options
):
def
Iperf_analyzeV2TCPOutput
(
self
,
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
iperf_real_options
):
self
.
command
(
'awk -f /tmp/tcp_iperf_stats.awk /tmp/CI-eNB/scripts/iperf_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'awk -f /tmp/tcp_iperf_stats.awk /tmp/CI-eNB/scripts/iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
result
=
re
.
search
(
'Avg Bitrate : (?P<average>[0-9\.]+ Mbits\/sec) Max Bitrate : (?P<maximum>[0-9\.]+ Mbits\/sec) Min Bitrate : (?P<minimum>[0-9\.]+ Mbits\/sec)'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'Avg Bitrate : (?P<average>[0-9\.]+ Mbits\/sec) Max Bitrate : (?P<maximum>[0-9\.]+ Mbits\/sec) Min Bitrate : (?P<minimum>[0-9\.]+ Mbits\/sec)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
avgbitrate
=
result
.
group
(
'average'
)
avgbitrate
=
result
.
group
(
'average'
)
...
@@ -932,7 +1141,7 @@ class SSHConnection():
...
@@ -932,7 +1141,7 @@ class SSHConnection():
return
0
return
0
def
Iperf_analyzeV2Server
(
self
,
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
iperf_real_options
):
def
Iperf_analyzeV2Server
(
self
,
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
iperf_real_options
):
if
(
not
os
.
path
.
isfile
(
'iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
)):
if
(
not
os
.
path
.
isfile
(
'iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
)):
self
.
ping_iperf_wrong_exit
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
'Could not analyze from server log'
)
self
.
ping_iperf_wrong_exit
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
'Could not analyze from server log'
)
return
return
# Computing the requested bandwidth in float
# Computing the requested bandwidth in float
...
@@ -957,7 +1166,7 @@ class SSHConnection():
...
@@ -957,7 +1166,7 @@ class SSHConnection():
req_bandwidth
=
'%.1f Gbits/sec'
%
req_bw
req_bandwidth
=
'%.1f Gbits/sec'
%
req_bw
req_bw
=
req_bw
*
1000000000
req_bw
=
req_bw
*
1000000000
server_file
=
open
(
'iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'r'
)
server_file
=
open
(
'iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'r'
)
br_sum
=
0.0
br_sum
=
0.0
ji_sum
=
0.0
ji_sum
=
0.0
pl_sum
=
0
pl_sum
=
0
...
@@ -1082,12 +1291,12 @@ class SSHConnection():
...
@@ -1082,12 +1291,12 @@ class SSHConnection():
# Launch iperf server on EPC side
# Launch iperf server on EPC side
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
+
'/scripts'
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
+
'/scripts'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
port
=
5001
+
idx
port
=
5001
+
idx
if
udpIperf
:
if
udpIperf
:
self
.
command
(
'echo $USER; nohup iperf -u -s -i 1 -p '
+
str
(
port
)
+
' > iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
EPCUserName
,
5
)
self
.
command
(
'echo $USER; nohup iperf -u -s -i 1 -p '
+
str
(
port
)
+
' > iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
EPCUserName
,
5
)
else
:
else
:
self
.
command
(
'echo $USER; nohup iperf -s -i 1 -p '
+
str
(
port
)
+
' > iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
EPCUserName
,
5
)
self
.
command
(
'echo $USER; nohup iperf -s -i 1 -p '
+
str
(
port
)
+
' > iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
EPCUserName
,
5
)
time
.
sleep
(
0.5
)
time
.
sleep
(
0.5
)
self
.
close
()
self
.
close
()
...
@@ -1104,8 +1313,8 @@ class SSHConnection():
...
@@ -1104,8 +1313,8 @@ class SSHConnection():
modified_options
=
modified_options
.
replace
(
'-R'
,
''
)
modified_options
=
modified_options
.
replace
(
'-R'
,
''
)
time
.
sleep
(
0.5
)
time
.
sleep
(
0.5
)
self
.
command
(
'rm -f iperf_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
iperf_status
=
self
.
command
(
'stdbuf -o0 adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -c '
+
EPC_Iperf_UE_IPAddress
+
' '
+
modified_options
+
' -p '
+
str
(
port
)
+
'" 2>&1 | stdbuf -o0 tee -a iperf_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
iperf_status
=
self
.
command
(
'stdbuf -o0 adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -c '
+
EPC_Iperf_UE_IPAddress
+
' '
+
modified_options
+
' -p '
+
str
(
port
)
+
'" 2>&1 | stdbuf -o0 tee -a iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
# TIMEOUT Case
# TIMEOUT Case
if
iperf_status
<
0
:
if
iperf_status
<
0
:
self
.
close
()
self
.
close
()
...
@@ -1123,15 +1332,15 @@ class SSHConnection():
...
@@ -1123,15 +1332,15 @@ class SSHConnection():
# in case of failure, retrieve server log
# in case of failure, retrieve server log
if
(
clientStatus
==
-
1
):
if
(
clientStatus
==
-
1
):
time
.
sleep
(
1
)
time
.
sleep
(
1
)
if
(
os
.
path
.
isfile
(
'iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
)):
if
(
os
.
path
.
isfile
(
'iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
)):
os
.
remove
(
'iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
)
os
.
remove
(
'iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
)
self
.
copyin
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
,
self
.
EPCSourceCodePath
+
'/scripts/iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'.'
)
self
.
copyin
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
,
self
.
EPCSourceCodePath
+
'/scripts/iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'.'
)
self
.
Iperf_analyzeV2Server
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
modified_options
)
self
.
Iperf_analyzeV2Server
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
modified_options
)
def
Iperf_common
(
self
,
lock
,
UE_IPAddress
,
device_id
,
idx
,
ue_num
,
statusQueue
):
def
Iperf_common
(
self
,
lock
,
UE_IPAddress
,
device_id
,
idx
,
ue_num
,
statusQueue
):
try
:
try
:
# Single-UE profile -- iperf only on one UE
# Single-UE profile -- iperf only on one UE
if
SSH
.
iperf_profile
==
'single-ue'
and
idx
!=
0
:
if
self
.
iperf_profile
==
'single-ue'
and
idx
!=
0
:
return
return
useIperf3
=
False
useIperf3
=
False
udpIperf
=
True
udpIperf
=
True
...
@@ -1162,13 +1371,13 @@ class SSHConnection():
...
@@ -1162,13 +1371,13 @@ class SSHConnection():
if
(
useIperf3
):
if
(
useIperf3
):
self
.
command
(
'stdbuf -o0 adb -s '
+
device_id
+
' shell /data/local/tmp/iperf3 -s &'
,
'\$'
,
5
)
self
.
command
(
'stdbuf -o0 adb -s '
+
device_id
+
' shell /data/local/tmp/iperf3 -s &'
,
'\$'
,
5
)
else
:
else
:
self
.
command
(
'rm -f iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
result
=
re
.
search
(
'-u'
,
str
(
self
.
iperf_args
))
result
=
re
.
search
(
'-u'
,
str
(
self
.
iperf_args
))
if
result
is
None
:
if
result
is
None
:
self
.
command
(
'echo $USER; nohup adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -s -i 1" > iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
ADBUserName
,
5
)
self
.
command
(
'echo $USER; nohup adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -s -i 1" > iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
ADBUserName
,
5
)
udpIperf
=
False
udpIperf
=
False
else
:
else
:
self
.
command
(
'echo $USER; nohup adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -u -s -i 1" > iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
ADBUserName
,
5
)
self
.
command
(
'echo $USER; nohup adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -u -s -i 1" > iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log &'
,
self
.
ADBUserName
,
5
)
time
.
sleep
(
0.5
)
time
.
sleep
(
0.5
)
self
.
close
()
self
.
close
()
...
@@ -1183,14 +1392,14 @@ class SSHConnection():
...
@@ -1183,14 +1392,14 @@ class SSHConnection():
modified_options
=
str
(
self
.
iperf_args
)
modified_options
=
str
(
self
.
iperf_args
)
time
.
sleep
(
0.5
)
time
.
sleep
(
0.5
)
self
.
command
(
'rm -f iperf_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
if
(
useIperf3
):
if
(
useIperf3
):
self
.
command
(
'stdbuf -o0 iperf3 -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee -a iperf_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
self
.
command
(
'stdbuf -o0 iperf3 -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee -a iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
clientStatus
=
0
clientStatus
=
0
self
.
Iperf_analyzeV3Output
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
)
self
.
Iperf_analyzeV3Output
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
)
else
:
else
:
iperf_status
=
self
.
command
(
'stdbuf -o0 iperf -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee -a iperf_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
iperf_status
=
self
.
command
(
'stdbuf -o0 iperf -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee -a iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
if
iperf_status
<
0
:
if
iperf_status
<
0
:
self
.
close
()
self
.
close
()
message
=
'iperf on UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT !'
message
=
'iperf on UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT !'
...
@@ -1209,9 +1418,9 @@ class SSHConnection():
...
@@ -1209,9 +1418,9 @@ class SSHConnection():
self
.
close
()
self
.
close
()
if
(
clientStatus
==
-
1
):
if
(
clientStatus
==
-
1
):
time
.
sleep
(
1
)
time
.
sleep
(
1
)
if
(
os
.
path
.
isfile
(
'iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
)):
if
(
os
.
path
.
isfile
(
'iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
)):
os
.
remove
(
'iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
)
os
.
remove
(
'iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
)
self
.
copyin
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
,
self
.
EPCSourceCodePath
+
'/scripts/iperf_server_'
+
SSH
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'.'
)
self
.
copyin
(
self
.
ADBIPAddress
,
self
.
ADBUserName
,
self
.
ADBPassword
,
self
.
EPCSourceCodePath
+
'/scripts/iperf_server_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'.'
)
self
.
Iperf_analyzeV2Server
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
modified_options
)
self
.
Iperf_analyzeV2Server
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
,
modified_options
)
except
:
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
...
@@ -1225,13 +1434,13 @@ class SSHConnection():
...
@@ -1225,13 +1434,13 @@ class SSHConnection():
if
(
pStatus
<
0
):
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
pStatus
)
self
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
if
(
ueIpStatus
<
0
):
if
(
ueIpStatus
<
0
):
self
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
UE_IP_ADDRESS_ISSUE
)
self
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
multi_jobs
=
[]
multi_jobs
=
[]
i
=
0
i
=
0
...
@@ -1251,7 +1460,7 @@ class SSHConnection():
...
@@ -1251,7 +1460,7 @@ class SSHConnection():
if
(
status_queue
.
empty
()):
if
(
status_queue
.
empty
()):
self
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
else
:
else
:
iperf_status
=
True
iperf_status
=
True
...
@@ -1266,7 +1475,7 @@ class SSHConnection():
...
@@ -1266,7 +1475,7 @@ class SSHConnection():
device_id
=
status_queue
.
get
()
device_id
=
status_queue
.
get
()
ip_addr
=
status_queue
.
get
()
ip_addr
=
status_queue
.
get
()
message
=
status_queue
.
get
()
message
=
status_queue
.
get
()
html_cell
=
"<pre>UE ("
+
device_id
+
")
\n
IP Address : "
+
ip_addr
+
"
\n
"
+
message
+
"</pre>"
html_cell
=
'<pre style="background-color:white">UE ('
+
device_id
+
')
\n
IP Address : '
+
ip_addr
+
'
\n
'
+
message
+
'</pre>'
html_queue
.
put
(
html_cell
)
html_queue
.
put
(
html_cell
)
if
(
iperf_noperf
and
iperf_status
):
if
(
iperf_noperf
and
iperf_status
):
self
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'PERF NOT MET'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'PERF NOT MET'
,
len
(
self
.
UEDevices
),
html_queue
)
...
@@ -1275,7 +1484,7 @@ class SSHConnection():
...
@@ -1275,7 +1484,7 @@ class SSHConnection():
else
:
else
:
self
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlFooter
(
False
)
self
.
CreateHtml
Tab
Footer
(
False
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
def
CheckProcessExist
(
self
,
initialize_eNB_flag
):
def
CheckProcessExist
(
self
,
initialize_eNB_flag
):
...
@@ -1313,7 +1522,7 @@ class SSHConnection():
...
@@ -1313,7 +1522,7 @@ class SSHConnection():
fileCheck
=
re
.
search
(
'enb_'
,
str
(
self
.
eNBLogFile
))
fileCheck
=
re
.
search
(
'enb_'
,
str
(
self
.
eNBLogFile
))
if
fileCheck
is
not
None
:
if
fileCheck
is
not
None
:
self
.
copyin
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
self
.
eNBLogFile
,
'.'
)
self
.
copyin
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
self
.
eNBLogFile
,
'.'
)
logStatus
=
self
.
AnalyzeLogFile_eNB
()
logStatus
=
self
.
AnalyzeLogFile_eNB
(
self
.
eNBLogFile
)
if
logStatus
<
0
:
if
logStatus
<
0
:
result
=
logStatus
result
=
logStatus
return
result
return
result
...
@@ -1384,10 +1593,10 @@ class SSHConnection():
...
@@ -1384,10 +1593,10 @@ class SSHConnection():
except
:
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
AnalyzeLogFile_eNB
(
self
):
def
AnalyzeLogFile_eNB
(
self
,
eNBlogFile
):
if
(
not
os
.
path
.
isfile
(
'./'
+
SSH
.
eNBL
ogFile
)):
if
(
not
os
.
path
.
isfile
(
'./'
+
eNBl
ogFile
)):
return
-
1
return
-
1
enb_log_file
=
open
(
'./'
+
SSH
.
eNBL
ogFile
,
'r'
)
enb_log_file
=
open
(
'./'
+
eNBl
ogFile
,
'r'
)
foundAssertion
=
False
foundAssertion
=
False
msgAssertion
=
''
msgAssertion
=
''
msgLine
=
0
msgLine
=
0
...
@@ -1401,6 +1610,8 @@ class SSHConnection():
...
@@ -1401,6 +1610,8 @@ class SSHConnection():
rrcReestablishRequest
=
0
rrcReestablishRequest
=
0
rrcReestablishComplete
=
0
rrcReestablishComplete
=
0
rrcReestablishReject
=
0
rrcReestablishReject
=
0
rlcDiscardBuffer
=
0
rachCanceledProcedure
=
0
uciStatMsgCount
=
0
uciStatMsgCount
=
0
pdcpFailure
=
0
pdcpFailure
=
0
ulschFailure
=
0
ulschFailure
=
0
...
@@ -1420,28 +1631,28 @@ class SSHConnection():
...
@@ -1420,28 +1631,28 @@ class SSHConnection():
if
foundAssertion
and
(
msgLine
<
3
):
if
foundAssertion
and
(
msgLine
<
3
):
msgLine
+=
1
msgLine
+=
1
msgAssertion
+=
str
(
line
)
msgAssertion
+=
str
(
line
)
result
=
re
.
search
(
'Generating RRCConnectionSetup'
,
str
(
line
))
result
=
re
.
search
(
'Generating
LTE_RRCConnectionSetup|Generating
RRCConnectionSetup'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcSetupRequest
+=
1
rrcSetupRequest
+=
1
result
=
re
.
search
(
'RRCConnectionSetupComplete from UE'
,
str
(
line
))
result
=
re
.
search
(
'
LTE_RRCConnectionSetupComplete from UE|
RRCConnectionSetupComplete from UE'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcSetupComplete
+=
1
rrcSetupComplete
+=
1
result
=
re
.
search
(
'Generate RRCConnectionRelease'
,
str
(
line
))
result
=
re
.
search
(
'Generate
LTE_RRCConnectionRelease|Generate
RRCConnectionRelease'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReleaseRequest
+=
1
rrcReleaseRequest
+=
1
result
=
re
.
search
(
'Generate RRCConnectionReconfiguration'
,
str
(
line
))
result
=
re
.
search
(
'Generate
LTE_RRCConnectionReconfiguration|Generate
RRCConnectionReconfiguration'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReconfigRequest
+=
1
rrcReconfigRequest
+=
1
result
=
re
.
search
(
'RRCConnectionReconfigurationComplete from UE rnti'
,
str
(
line
))
result
=
re
.
search
(
'
LTE_RRCConnectionReconfigurationComplete from UE rnti|
RRCConnectionReconfigurationComplete from UE rnti'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReconfigComplete
+=
1
rrcReconfigComplete
+=
1
result
=
re
.
search
(
'RRCConnectionReestablishmentRequest'
,
str
(
line
))
result
=
re
.
search
(
'
LTE_RRCConnectionReestablishmentRequest|
RRCConnectionReestablishmentRequest'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReestablishRequest
+=
1
rrcReestablishRequest
+=
1
result
=
re
.
search
(
'RRCConnectionReestablishmentComplete'
,
str
(
line
))
result
=
re
.
search
(
'
LTE_RRCConnectionReestablishmentComplete|
RRCConnectionReestablishmentComplete'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReestablishComplete
+=
1
rrcReestablishComplete
+=
1
result
=
re
.
search
(
'RRCConnectionReestablishmentReject'
,
str
(
line
))
result
=
re
.
search
(
'
LTE_RRCConnectionReestablishmentReject|
RRCConnectionReestablishmentReject'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReestablishReject
+=
1
rrcReestablishReject
+=
1
result
=
re
.
search
(
'uci->stat'
,
str
(
line
))
result
=
re
.
search
(
'uci->stat'
,
str
(
line
))
...
@@ -1453,6 +1664,12 @@ class SSHConnection():
...
@@ -1453,6 +1664,12 @@ class SSHConnection():
result
=
re
.
search
(
'ULSCH in error in round'
,
str
(
line
))
result
=
re
.
search
(
'ULSCH in error in round'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
ulschFailure
+=
1
ulschFailure
+=
1
result
=
re
.
search
(
'BAD all_segments_received'
,
str
(
line
))
if
result
is
not
None
:
rlcDiscardBuffer
+=
1
result
=
re
.
search
(
'Canceled RA procedure for UE rnti'
,
str
(
line
))
if
result
is
not
None
:
rachCanceledProcedure
+=
1
enb_log_file
.
close
()
enb_log_file
.
close
()
self
.
htmleNBFailureMsg
=
''
self
.
htmleNBFailureMsg
=
''
if
uciStatMsgCount
>
0
:
if
uciStatMsgCount
>
0
:
...
@@ -1495,6 +1712,10 @@ class SSHConnection():
...
@@ -1495,6 +1712,10 @@ class SSHConnection():
rrcMsg
=
' -- '
+
str
(
rrcReestablishReject
)
+
' were rejected'
rrcMsg
=
' -- '
+
str
(
rrcReestablishReject
)
+
' were rejected'
logging
.
debug
(
'
\u001B
[1;30;43m '
+
rrcMsg
+
'
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;30;43m '
+
rrcMsg
+
'
\u001B
[0m'
)
self
.
htmleNBFailureMsg
+=
rrcMsg
+
'
\n
'
self
.
htmleNBFailureMsg
+=
rrcMsg
+
'
\n
'
if
rachCanceledProcedure
>
0
:
rachMsg
=
'eNB cancelled '
+
str
(
rachCanceledProcedure
)
+
' RA procedure(s)'
logging
.
debug
(
'
\u001B
[1;30;43m '
+
rachMsg
+
'
\u001B
[0m'
)
self
.
htmleNBFailureMsg
+=
rachMsg
+
'
\n
'
if
foundSegFault
:
if
foundSegFault
:
logging
.
debug
(
'
\u001B
[1;37;41m eNB ended with a Segmentation Fault!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m eNB ended with a Segmentation Fault!
\u001B
[0m'
)
return
ENB_PROCESS_SEG_FAULT
return
ENB_PROCESS_SEG_FAULT
...
@@ -1506,33 +1727,75 @@ class SSHConnection():
...
@@ -1506,33 +1727,75 @@ class SSHConnection():
logging
.
debug
(
'
\u001B
[1;37;41m eNB faced real time issues!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m eNB faced real time issues!
\u001B
[0m'
)
self
.
htmleNBFailureMsg
+=
'eNB faced real time issues!
\n
'
self
.
htmleNBFailureMsg
+=
'eNB faced real time issues!
\n
'
#return ENB_PROCESS_REALTIME_ISSUE
#return ENB_PROCESS_REALTIME_ISSUE
if
rlcDiscardBuffer
>
0
:
rlcMsg
=
'eNB RLC discarded '
+
str
(
rlcDiscardBuffer
)
+
' buffer(s)'
logging
.
debug
(
'
\u001B
[1;37;41m '
+
rlcMsg
+
'
\u001B
[0m'
)
self
.
htmleNBFailureMsg
+=
rlcMsg
+
'
\n
'
return
ENB_PROCESS_REALTIME_ISSUE
return
0
return
0
def
TerminateeNB
(
self
):
def
TerminateeNB
(
self
):
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
+
'/cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
+
'/cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S daemon --name=enb'
+
str
(
SSH
.
eNB_instance
)
+
'_daemon --stop'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S daemon --name=enb'
+
str
(
self
.
eNB_instance
)
+
'_daemon --stop'
,
'\$'
,
5
)
self
.
command
(
'rm -f my-lte-softmodem-run'
+
str
(
SSH
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'rm -f my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGINT lte-softmodem || true'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGINT lte-softmodem || true'
,
'\$'
,
5
)
time
.
sleep
(
5
)
time
.
sleep
(
5
)
self
.
command
(
'stdbuf -o0 ps -aux | grep -v grep | grep lte-softmodem'
,
'\$'
,
5
)
self
.
command
(
'stdbuf -o0 ps -aux | grep -v grep | grep lte-softmodem'
,
'\$'
,
5
)
result
=
re
.
search
(
'lte-softmodem'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'lte-softmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGKILL lte-softmodem || true'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGKILL lte-softmodem || true'
,
'\$'
,
5
)
time
.
sleep
(
5
)
self
.
close
()
self
.
close
()
result
=
re
.
search
(
'enb_'
,
str
(
self
.
eNBLogFile
))
# If tracer options is on, stopping tshark on EPC side
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
not
None
:
if
result
is
not
None
:
self
.
copyin
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
self
.
eNBLogFile
,
'.'
)
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
logStatus
=
self
.
AnalyzeLogFile_eNB
()
logging
.
debug
(
'
\u001B
[1m Stopping tshark
\u001B
[0m'
)
if
(
logStatus
<
0
):
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S killall --signal SIGKILL tshark'
,
'\$'
,
5
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
)
time
.
sleep
(
1
)
self
.
CreateHtmlFooter
(
False
)
pcap_log_file
=
self
.
eNBLogFile
.
replace
(
'.log'
,
'_s1log.pcap'
)
sys
.
exit
(
1
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S chmod 666 /tmp/'
+
pcap_log_file
,
'\$'
,
5
)
else
:
self
.
copyin
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
,
'/tmp/'
+
pcap_log_file
,
'.'
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
copyout
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
pcap_log_file
,
self
.
eNBSourceCodePath
+
'/cmake_targets/.'
)
self
.
close
()
logging
.
debug
(
'
\u001B
[1m Replaying RAW record file
\u001B
[0m'
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
+
'/common/utils/T/tracer/'
,
'\$'
,
5
)
raw_record_file
=
self
.
eNBLogFile
.
replace
(
'.log'
,
'_record.raw'
)
replay_log_file
=
self
.
eNBLogFile
.
replace
(
'.log'
,
'_replay.log'
)
extracted_txt_file
=
self
.
eNBLogFile
.
replace
(
'.log'
,
'_extracted_messages.txt'
)
extracted_log_file
=
self
.
eNBLogFile
.
replace
(
'.log'
,
'_extracted_messages.log'
)
self
.
command
(
'./extract_config -i '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
raw_record_file
+
' > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
extracted_txt_file
,
'\$'
,
5
)
self
.
command
(
'echo $USER; nohup ./replay -i '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
raw_record_file
+
' > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
replay_log_file
+
' 2>&1 &'
,
self
.
eNBUserName
,
5
)
self
.
command
(
'./textlog -d '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
extracted_txt_file
+
' -no-gui -ON -full > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
extracted_log_file
,
'\$'
,
5
)
self
.
close
()
self
.
copyin
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
extracted_log_file
,
'.'
)
logging
.
debug
(
'
\u001B
[1m Analyzing eNB replay logfile
\u001B
[0m'
)
logStatus
=
self
.
AnalyzeLogFile_eNB
(
extracted_log_file
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
eNBLogFile
=
''
self
.
eNBLogFile
=
''
else
:
else
:
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
result
=
re
.
search
(
'enb_'
,
str
(
self
.
eNBLogFile
))
if
result
is
not
None
:
copyin_res
=
self
.
copyin
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
self
.
eNBLogFile
,
'.'
)
if
(
copyin_res
==
-
1
):
logging
.
debug
(
'
\u001B
[1;37;41m Could not copy eNB logfile to analyze it!
\u001B
[0m'
)
self
.
htmleNBFailureMsg
=
'Could not copy eNB logfile to analyze it!'
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
)
self
.
eNBLogFile
=
''
return
logging
.
debug
(
'
\u001B
[1m Analyzing eNB logfile
\u001B
[0m'
)
logStatus
=
self
.
AnalyzeLogFile_eNB
(
self
.
eNBLogFile
)
if
(
logStatus
<
0
):
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
)
self
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
1
)
else
:
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
eNBLogFile
=
''
else
:
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
def
TerminateHSS
(
self
):
def
TerminateHSS
(
self
):
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
...
@@ -1548,11 +1811,8 @@ class SSHConnection():
...
@@ -1548,11 +1811,8 @@ class SSHConnection():
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'rm -f ./kill_hss.sh'
,
'\$'
,
5
)
self
.
command
(
'rm -f ./kill_hss.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S daemon --name=simulated_hss --stop'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S daemon --name=simulated_hss --stop'
,
'\$'
,
5
)
time
.
sleep
(
2
)
time
.
sleep
(
1
)
self
.
command
(
'ps -aux | egrep --color=never "hss_sim|simulated_hss" | grep -v grep | awk
\'
BEGIN{n=0}{pidId[n]=$2;n=n+1}END{print "kill -9 " pidId[0] " " pidId[1]}
\'
> ./kill_hss.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S killall --signal SIGKILL hss_sim'
,
'\$'
,
5
)
self
.
command
(
'chmod 755 ./kill_hss.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S ./kill_hss.sh'
,
'\$'
,
5
)
self
.
command
(
'rm ./kill_hss.sh'
,
'\$'
,
5
)
self
.
close
()
self
.
close
()
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
ALL_PROCESSES_OK
)
...
@@ -1603,7 +1863,7 @@ class SSHConnection():
...
@@ -1603,7 +1863,7 @@ class SSHConnection():
def
TerminateUE
(
self
):
def
TerminateUE
(
self
):
terminate_ue_flag
=
True
terminate_ue_flag
=
True
SSH
.
GetAllUEDevices
(
terminate_ue_flag
)
self
.
GetAllUEDevices
(
terminate_ue_flag
)
multi_jobs
=
[]
multi_jobs
=
[]
for
device_id
in
self
.
UEDevices
:
for
device_id
in
self
.
UEDevices
:
p
=
Process
(
target
=
SSH
.
TerminateUE_common
,
args
=
(
device_id
,))
p
=
Process
(
target
=
SSH
.
TerminateUE_common
,
args
=
(
device_id
,))
...
@@ -1625,6 +1885,10 @@ class SSHConnection():
...
@@ -1625,6 +1885,10 @@ class SSHConnection():
self
.
eNB_instance
=
'0'
self
.
eNB_instance
=
'0'
self
.
TerminateeNB
()
self
.
TerminateeNB
()
def
IdleSleep
(
self
):
time
.
sleep
(
self
.
idle_sleep_time
)
self
.
CreateHtmlTestRow
(
str
(
self
.
idle_sleep_time
)
+
' sec'
,
'OK'
,
ALL_PROCESSES_OK
)
def
LogCollectBuild
(
self
):
def
LogCollectBuild
(
self
):
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
...
@@ -1639,8 +1903,8 @@ class SSHConnection():
...
@@ -1639,8 +1903,8 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -f enb.log.zip'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -f enb.log.zip'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S zip enb.log.zip enb*.log core*'
,
'\$'
,
60
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S zip enb.log.zip enb*.log core*
enb_*record.raw enb_*.pcap enb_*txt
'
,
'\$'
,
60
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm enb*.log core*'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm enb*.log core*
enb_*record.raw enb_*.pcap enb_*txt
'
,
'\$'
,
5
)
self
.
close
()
self
.
close
()
def
LogCollectPing
(
self
):
def
LogCollectPing
(
self
):
...
@@ -1699,6 +1963,46 @@ class SSHConnection():
...
@@ -1699,6 +1963,46 @@ class SSHConnection():
self
.
command
(
'cp /opt/ltebox/var/log/xGwLog.0 .'
,
'\$'
,
5
)
self
.
command
(
'cp /opt/ltebox/var/log/xGwLog.0 .'
,
'\$'
,
5
)
self
.
command
(
'zip spgw.log.zip xGwLog.0'
,
'\$'
,
60
)
self
.
command
(
'zip spgw.log.zip xGwLog.0'
,
'\$'
,
60
)
self
.
close
()
self
.
close
()
def
RetrieveSystemVersion
(
self
):
if
self
.
eNBIPAddress
==
'none'
:
self
.
eNBOsVersion
=
'Ubuntu 16.04.5 LTS'
self
.
eNBKernelVersion
=
'4.15.0-45-generic'
self
.
eNBUhdVersion
=
'3.13.0.1-0'
self
.
eNBCpuNb
=
'4'
self
.
eNBCpuModel
=
'Intel(R) Core(TM) i5-6200U'
self
.
eNBCpuMHz
=
'2399.996 MHz'
return
if
self
.
eNBIPAddress
==
''
or
self
.
eNBUserName
==
''
or
self
.
eNBPassword
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'lsb_release -a'
,
'\$'
,
5
)
result
=
re
.
search
(
'Description:
\\\\
t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
eNBOsVersion
=
result
.
group
(
'os_type'
)
logging
.
debug
(
'OS is: '
+
self
.
eNBOsVersion
)
self
.
command
(
'uname -r'
,
'\$'
,
5
)
result
=
re
.
search
(
'uname -r
\\\\
r
\\\\
n(?P<kernel_version>[a-zA-Z0-9\-\_\.]+)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
eNBKernelVersion
=
result
.
group
(
'kernel_version'
)
logging
.
debug
(
'Kernel Version is: '
+
self
.
eNBKernelVersion
)
self
.
command
(
'dpkg --list | egrep --color=never libuhd003'
,
'\$'
,
5
)
result
=
re
.
search
(
'libuhd003:amd64 *(?P<uhd_version>[0-9\.]+)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
eNBUhdVersion
=
result
.
group
(
'uhd_version'
)
logging
.
debug
(
'UHD Version is: '
+
self
.
eNBUhdVersion
)
self
.
command
(
'lscpu'
,
'\$'
,
5
)
result
=
re
.
search
(
'CPU\(s\): *(?P<nb_cpus>[0-9]+).*Model name: *(?P<model>[a-zA-Z0-9\-\_\.\ \(\)]+).*CPU MHz: *(?P<cpu_mhz>[0-9\.]+)'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
eNBCpuNb
=
result
.
group
(
'nb_cpus'
)
logging
.
debug
(
'nb_cpus: '
+
self
.
eNBCpuNb
)
self
.
eNBCpuModel
=
result
.
group
(
'model'
)
logging
.
debug
(
'model: '
+
self
.
eNBCpuModel
)
self
.
eNBCpuMHz
=
result
.
group
(
'cpu_mhz'
)
+
' MHz'
logging
.
debug
(
'cpu_mhz: '
+
self
.
eNBCpuMHz
)
self
.
close
()
#-----------------------------------------------------------
#-----------------------------------------------------------
# HTML Reporting....
# HTML Reporting....
#-----------------------------------------------------------
#-----------------------------------------------------------
...
@@ -1708,9 +2012,14 @@ class SSHConnection():
...
@@ -1708,9 +2012,14 @@ class SSHConnection():
self
.
htmlFile
.
write
(
'<!DOCTYPE html>
\n
'
)
self
.
htmlFile
.
write
(
'<!DOCTYPE html>
\n
'
)
self
.
htmlFile
.
write
(
'<html class="no-js" lang="en-US">
\n
'
)
self
.
htmlFile
.
write
(
'<html class="no-js" lang="en-US">
\n
'
)
self
.
htmlFile
.
write
(
'<head>
\n
'
)
self
.
htmlFile
.
write
(
'<head>
\n
'
)
self
.
htmlFile
.
write
(
' <meta name="viewport" content="width=device-width, initial-scale=1">
\n
'
)
self
.
htmlFile
.
write
(
' <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
\n
'
)
self
.
htmlFile
.
write
(
' <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
\n
'
)
self
.
htmlFile
.
write
(
' <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
\n
'
)
self
.
htmlFile
.
write
(
' <title>Test Results for TEMPLATE_JOB_NAME job build #TEMPLATE_BUILD_ID</title>
\n
'
)
self
.
htmlFile
.
write
(
' <title>Test Results for TEMPLATE_JOB_NAME job build #TEMPLATE_BUILD_ID</title>
\n
'
)
self
.
htmlFile
.
write
(
'</head>
\n
'
)
self
.
htmlFile
.
write
(
'</head>
\n
'
)
self
.
htmlFile
.
write
(
'<body>
\n
'
)
self
.
htmlFile
.
write
(
'<body><div class="container">
\n
'
)
self
.
htmlFile
.
write
(
' <br>
\n
'
)
self
.
htmlFile
.
write
(
' <table style="border-collapse: collapse; border: none;">
\n
'
)
self
.
htmlFile
.
write
(
' <table style="border-collapse: collapse; border: none;">
\n
'
)
self
.
htmlFile
.
write
(
' <tr style="border-collapse: collapse; border: none;">
\n
'
)
self
.
htmlFile
.
write
(
' <tr style="border-collapse: collapse; border: none;">
\n
'
)
self
.
htmlFile
.
write
(
' <td style="border-collapse: collapse; border: none;">
\n
'
)
self
.
htmlFile
.
write
(
' <td style="border-collapse: collapse; border: none;">
\n
'
)
...
@@ -1725,60 +2034,113 @@ class SSHConnection():
...
@@ -1725,60 +2034,113 @@ class SSHConnection():
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
self
.
htmlFile
.
write
(
' <br>
\n
'
)
self
.
htmlFile
.
write
(
' <br>
\n
'
)
self
.
htmlFile
.
write
(
' <div class="alert alert-info"><strong> <span class="glyphicon glyphicon-dashboard"></span> TEMPLATE_STAGE_NAME</strong></div>
\n
'
)
self
.
htmlFile
.
write
(
' <table border = "1">
\n
'
)
self
.
htmlFile
.
write
(
' <table border = "1">
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
Build Start Time (UTC)
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-time"></span> Build Start Time (UTC)
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>TEMPLATE_BUILD_TIME</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>TEMPLATE_BUILD_TIME</td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
GIT Repository
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-cloud-upload"></span> GIT Repository
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><a href="'
+
SSH
.
eNBRepository
+
'">'
+
SSH
.
eNBRepository
+
'</a></td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><a href="'
+
self
.
eNBRepository
+
'">'
+
self
.
eNBRepository
+
'</a></td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
Job Trigger
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-wrench"></span> Job Trigger
</td>
\n
'
)
if
(
SSH
.
eNB_AllowMerge
):
if
(
self
.
eNB_AllowMerge
):
self
.
htmlFile
.
write
(
' <td>Merge-Request</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>Merge-Request</td>
\n
'
)
else
:
else
:
self
.
htmlFile
.
write
(
' <td>Push to Branch</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>Push to Branch</td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
if
(
SSH
.
eNB_AllowMerge
):
if
(
self
.
eNB_AllowMerge
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
Source Branch
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-log-out"></span> Source Branch
</td>
\n
'
)
else
:
else
:
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >Branch</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-tree-deciduous"></span>
Branch</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
SSH
.
eNBBranch
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
self
.
eNBBranch
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
if
(
SSH
.
eNB_AllowMerge
):
if
(
self
.
eNB_AllowMerge
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
Source Commit ID
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-tag"></span> Source Commit ID
</td>
\n
'
)
else
:
else
:
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
Commit ID
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >
<span class="glyphicon glyphicon-tag"></span> Commit ID
</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
SSH
.
eNBCommitID
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
self
.
eNBCommitID
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
if
(
SSH
.
eNB_AllowMerge
):
if
self
.
eNB_AllowMerge
!=
''
:
commit_message
=
subprocess
.
check_output
(
"git log -n1 --pretty=format:
\"
%s
\"
"
+
self
.
eNBCommitID
,
shell
=
True
,
universal_newlines
=
True
)
commit_message
=
commit_message
.
strip
()
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
if
(
self
.
eNB_AllowMerge
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" > <span class="glyphicon glyphicon-comment"></span> Source Commit Message </td>
\n
'
)
else
:
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" > <span class="glyphicon glyphicon-comment"></span> Commit Message </td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
commit_message
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
if
(
self
.
eNB_AllowMerge
):
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >Target Branch</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" > <span class="glyphicon glyphicon-log-in"></span> Target Branch </td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>develop</td>
\n
'
)
if
(
self
.
eNBTargetBranch
==
''
):
self
.
htmlFile
.
write
(
' <td>develop</td>
\n
'
)
else
:
self
.
htmlFile
.
write
(
' <td>'
+
self
.
eNBTargetBranch
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
terminate_ue_flag
=
True
terminate_ue_flag
=
True
SSH
.
GetAllUEDevices
(
terminate_ue_flag
)
if
(
self
.
ADBIPAddress
!=
'none'
):
self
.
GetAllUEDevices
(
terminate_ue_flag
)
self
.
GetAllCatMDevices
(
terminate_ue_flag
)
else
:
self
.
UEDevices
.
append
(
'doughq9rehg'
)
self
.
UEDevices
.
append
(
'dnsgiuahgia'
)
self
.
UEDevices
.
append
(
'uehgieng9'
)
self
.
htmlUEConnected
=
len
(
self
.
UEDevices
)
self
.
htmlUEConnected
=
len
(
self
.
UEDevices
)
self
.
htmlFile
.
write
(
' <h2><a href="#FinalStatus">Jump to Final Status</a></h2>
\n
'
)
self
.
htmlFile
.
write
(
' <h2><span class="glyphicon glyphicon-phone"></span> <span class="glyphicon glyphicon-menu-right"></span> '
+
str
(
len
(
self
.
UEDevices
))
+
' UE(s) is(are) connected to ADB bench server</h2>
\n
'
)
self
.
htmlFile
.
write
(
' <br>
\n
'
)
self
.
htmlFile
.
write
(
' <h2><span class="glyphicon glyphicon-phone"></span> <span class="glyphicon glyphicon-menu-right"></span> '
+
str
(
len
(
self
.
CatMDevices
))
+
' CAT-M UE(s) is(are) connected to bench server</h2>
\n
'
)
self
.
htmlFile
.
write
(
' <h2>'
+
str
(
self
.
htmlUEConnected
)
+
' UE(s) is(are) connected to ADB bench server</h2>
\n
'
)
self
.
htmlFile
.
write
(
' <br>
\n
'
)
self
.
htmlFile
.
write
(
' <br>
\n
'
)
self
.
htmlFile
.
write
(
' <ul class="nav nav-pills">
\n
'
)
count
=
0
while
(
count
<
self
.
nbTestXMLfiles
):
pillMsg
=
' <li><a data-toggle="pill" href="#'
pillMsg
+=
self
.
htmlTabRefs
[
count
]
pillMsg
+=
'">'
pillMsg
+=
self
.
htmlTabNames
[
count
]
pillMsg
+=
' <span class="glyphicon glyphicon-'
pillMsg
+=
self
.
htmlTabIcons
[
count
]
pillMsg
+=
'"></span></a></li>
\n
'
self
.
htmlFile
.
write
(
pillMsg
)
count
+=
1
self
.
htmlFile
.
write
(
' </ul>
\n
'
)
self
.
htmlFile
.
write
(
' <div class="tab-content">
\n
'
)
self
.
htmlFile
.
close
()
self
.
htmlFile
.
write
(
' <h2>Test Summary for '
+
SSH
.
testXMLfile
+
'</h2>
\n
'
)
def
CreateHtmlTabHeader
(
self
):
self
.
htmlFile
.
write
(
' <table border = "1">
\n
'
)
if
(
not
self
.
htmlHeaderCreated
):
if
(
not
os
.
path
.
isfile
(
'test_results.html'
)):
self
.
CreateHtmlHeader
()
self
.
htmlFile
=
open
(
'test_results.html'
,
'a'
)
if
(
self
.
nbTestXMLfiles
==
1
):
self
.
htmlFile
.
write
(
' <div id="'
+
self
.
htmlTabRefs
[
0
]
+
'" class="tab-pane fade">
\n
'
)
self
.
htmlFile
.
write
(
' <h3>Test Summary for <span class="glyphicon glyphicon-file"></span> '
+
self
.
testXMLfiles
[
0
]
+
'</h3>
\n
'
)
else
:
self
.
htmlFile
.
write
(
' <div id="build-tab" class="tab-pane fade">
\n
'
)
self
.
htmlFile
.
write
(
' <table class="table" border = "1">
\n
'
)
self
.
htmlFile
.
write
(
' <tr bgcolor = "#33CCFF" >
\n
'
)
self
.
htmlFile
.
write
(
' <tr bgcolor = "#33CCFF" >
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Id</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Id</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Desc</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Desc</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Options</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Options</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Status</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>Test Status</th>
\n
'
)
if
(
self
.
htmlUEConnected
==
-
1
):
terminate_ue_flag
=
True
if
(
self
.
ADBIPAddress
!=
'none'
):
self
.
GetAllUEDevices
(
terminate_ue_flag
)
self
.
GetAllCatMDevices
(
terminate_ue_flag
)
else
:
self
.
UEDevices
.
append
(
'doughq9rehg'
)
self
.
UEDevices
.
append
(
'dnsgiuahgia'
)
self
.
UEDevices
.
append
(
'uehgieng9'
)
self
.
htmlUEConnected
=
len
(
self
.
UEDevices
)
i
=
0
i
=
0
while
(
i
<
self
.
htmlUEConnected
):
while
(
i
<
self
.
htmlUEConnected
):
self
.
htmlFile
.
write
(
' <th>UE'
+
str
(
i
)
+
' Status</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th>UE'
+
str
(
i
)
+
' Status</th>
\n
'
)
...
@@ -1786,26 +2148,64 @@ class SSHConnection():
...
@@ -1786,26 +2148,64 @@ class SSHConnection():
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlHeaderCreated
=
True
self
.
htmlHeaderCreated
=
True
def
CreateHtmlFooter
(
self
,
passStatus
):
def
CreateHtml
Tab
Footer
(
self
,
passStatus
):
if
((
not
self
.
htmlFooterCreated
)
and
(
self
.
htmlHeaderCreated
)):
if
((
not
self
.
htmlFooterCreated
)
and
(
self
.
htmlHeaderCreated
)):
self
.
htmlFile
.
write
(
' <tr id="FinalStatus">
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <th bgcolor = "#33CCFF" colspan=2>Final Status</th>
\n
'
)
self
.
htmlFile
.
write
(
' <th bgcolor = "#33CCFF" colspan=2>Final Tab Status</th>
\n
'
)
if
passStatus
:
self
.
htmlFile
.
write
(
' <th bgcolor = "green" colspan='
+
str
(
2
+
self
.
htmlUEConnected
)
+
'><font color="white">PASS <span class="glyphicon glyphicon-ok"></span> </font></th>
\n
'
)
else
:
self
.
htmlFile
.
write
(
' <th bgcolor = "red" colspan='
+
str
(
2
+
self
.
htmlUEConnected
)
+
'><font color="white">FAIL <span class="glyphicon glyphicon-remove"></span> </font></th>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
self
.
htmlFile
.
write
(
' </div>
\n
'
)
self
.
htmlFooterCreated
=
False
def
CreateHtmlFooter
(
self
,
passStatus
):
if
(
os
.
path
.
isfile
(
'test_results.html'
)):
self
.
RetrieveSystemVersion
()
self
.
htmlFile
=
open
(
'test_results.html'
,
'a'
)
self
.
htmlFile
.
write
(
'</div>
\n
'
)
self
.
htmlFile
.
write
(
' <p></p>
\n
'
)
self
.
htmlFile
.
write
(
' <table class="table table-condensed">
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <th colspan=6>eNB Server Characteristics</th>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td>OS Version</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><span class="label label-default">'
+
self
.
eNBOsVersion
+
'</span></td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>Kernel Version</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><span class="label label-default">'
+
self
.
eNBKernelVersion
+
'</span></td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>UHD Version</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><span class="label label-default">'
+
self
.
eNBUhdVersion
+
'</span></td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td>Nb CPUs</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><span class="label label-default">'
+
self
.
eNBCpuNb
+
'</span></td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>CPU Model Name</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><span class="label label-default">'
+
self
.
eNBCpuModel
+
'</span></td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>CPU Frequency</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td><span class="label label-default">'
+
self
.
eNBCpuMHz
+
'</span></td>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <th colspan=4 bgcolor = "#33CCFF">Final Status</th>
\n
'
)
if
passStatus
:
if
passStatus
:
self
.
htmlFile
.
write
(
' <th
bgcolor = "green" colspan='
+
str
(
2
+
self
.
htmlUEConnected
)
+
'><font color="white">PASS
</font></th>
\n
'
)
self
.
htmlFile
.
write
(
' <th
colspan=2 bgcolor="green"><font color="white">PASS <span class="glyphicon glyphicon-ok"></span>
</font></th>
\n
'
)
else
:
else
:
self
.
htmlFile
.
write
(
' <th
bgcolor = "red" colspan='
+
str
(
2
+
self
.
htmlUEConnected
)
+
'><font color="white">FAIL
</font></th>
\n
'
)
self
.
htmlFile
.
write
(
' <th
colspan=2 bgcolor="red"><font color="white">FAIL <span class="glyphicon glyphicon-remove"></span>
</font></th>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </tr>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
self
.
htmlFile
.
write
(
' </table>
\n
'
)
self
.
htmlFile
.
write
(
'</body>
\n
'
)
self
.
htmlFile
.
write
(
' <p></p>
\n
'
)
self
.
htmlFile
.
write
(
' <div class="well well-lg">End of Test Report -- Copyright <span class="glyphicon glyphicon-copyright-mark"></span> 2018 <a href="http://www.openairinterface.org/">OpenAirInterface</a>. All Rights Reserved.</div>
\n
'
)
self
.
htmlFile
.
write
(
'</div></body>
\n
'
)
self
.
htmlFile
.
write
(
'</html>
\n
'
)
self
.
htmlFile
.
write
(
'</html>
\n
'
)
self
.
htmlFile
.
close
()
self
.
htmlFile
.
close
()
self
.
htmlFooterCreated
=
False
def
CreateHtmlTestRow
(
self
,
options
,
status
,
processesStatus
):
def
CreateHtmlTestRow
(
self
,
options
,
status
,
processesStatus
):
if
((
not
self
.
htmlFooterCreated
)
and
(
self
.
htmlHeaderCreated
)):
if
((
not
self
.
htmlFooterCreated
)
and
(
self
.
htmlHeaderCreated
)):
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >'
+
SSH
.
testCase_id
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >'
+
self
.
testCase_id
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
SSH
.
desc
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
self
.
desc
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
str
(
options
)
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
str
(
options
)
+
'</td>
\n
'
)
if
(
str
(
status
)
==
'OK'
):
if
(
str
(
status
)
==
'OK'
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightgreen" >'
+
str
(
status
)
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightgreen" >'
+
str
(
status
)
+
'</td>
\n
'
)
...
@@ -1819,7 +2219,9 @@ class SSHConnection():
...
@@ -1819,7 +2219,9 @@ class SSHConnection():
elif
(
processesStatus
==
ENB_PROCESS_ASSERTION
):
elif
(
processesStatus
==
ENB_PROCESS_ASSERTION
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process ended in Assertion</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process ended in Assertion</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_REALTIME_ISSUE
):
elif
(
processesStatus
==
ENB_PROCESS_REALTIME_ISSUE
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process faced Real Time issue(s)/td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process faced Real Time issue(s)</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
):
self
.
htmlFile
.
write
(
' <td bgcolor = "orange" >OK</td>
\n
'
)
elif
(
processesStatus
==
HSS_PROCESS_FAILED
):
elif
(
processesStatus
==
HSS_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - HSS process not found</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - HSS process not found</td>
\n
'
)
elif
(
processesStatus
==
MME_PROCESS_FAILED
):
elif
(
processesStatus
==
MME_PROCESS_FAILED
):
...
@@ -1838,10 +2240,11 @@ class SSHConnection():
...
@@ -1838,10 +2240,11 @@ class SSHConnection():
if
result
is
not
None
:
if
result
is
not
None
:
cellBgColor
=
'red'
cellBgColor
=
'red'
else
:
else
:
result
=
re
.
search
(
'showed|Reestablishment'
,
self
.
htmleNBFailureMsg
)
result
=
re
.
search
(
'showed|Reestablishment
|Could not copy eNB logfile
'
,
self
.
htmleNBFailureMsg
)
if
result
is
not
None
:
if
result
is
not
None
:
cellBgColor
=
'orange'
cellBgColor
=
'orange'
self
.
htmlFile
.
write
(
' <td bgcolor = "'
+
cellBgColor
+
'" colspan='
+
str
(
self
.
htmlUEConnected
)
+
'><pre>'
+
self
.
htmleNBFailureMsg
+
'</pre></td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "'
+
cellBgColor
+
'" colspan='
+
str
(
self
.
htmlUEConnected
)
+
'><pre style="background-color:'
+
cellBgColor
+
'">'
+
self
.
htmleNBFailureMsg
+
'</pre></td>
\n
'
)
self
.
htmleNBFailureMsg
=
''
self
.
htmleNBFailureMsg
=
''
else
:
else
:
i
=
0
i
=
0
...
@@ -1854,8 +2257,8 @@ class SSHConnection():
...
@@ -1854,8 +2257,8 @@ class SSHConnection():
if
((
not
self
.
htmlFooterCreated
)
and
(
self
.
htmlHeaderCreated
)):
if
((
not
self
.
htmlFooterCreated
)
and
(
self
.
htmlHeaderCreated
)):
addOrangeBK
=
False
addOrangeBK
=
False
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <tr>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >'
+
SSH
.
testCase_id
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcyan" >'
+
self
.
testCase_id
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
SSH
.
desc
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
self
.
desc
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
str
(
options
)
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
str
(
options
)
+
'</td>
\n
'
)
if
(
str
(
status
)
==
'OK'
):
if
(
str
(
status
)
==
'OK'
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightgreen" >'
+
str
(
status
)
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightgreen" >'
+
str
(
status
)
+
'</td>
\n
'
)
...
@@ -1869,7 +2272,7 @@ class SSHConnection():
...
@@ -1869,7 +2272,7 @@ class SSHConnection():
if
(
i
<
ue_status
):
if
(
i
<
ue_status
):
if
(
not
ue_queue
.
empty
()):
if
(
not
ue_queue
.
empty
()):
if
(
addOrangeBK
):
if
(
addOrangeBK
):
self
.
htmlFile
.
write
(
' <td bgcolor = "orange" >'
+
str
(
ue_queue
.
get
())
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "orange" >'
+
str
(
ue_queue
.
get
())
.
replace
(
'white'
,
'orange'
)
+
'</td>
\n
'
)
else
:
else
:
self
.
htmlFile
.
write
(
' <td>'
+
str
(
ue_queue
.
get
())
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td>'
+
str
(
ue_queue
.
get
())
+
'</td>
\n
'
)
else
:
else
:
...
@@ -1899,12 +2302,15 @@ def Usage():
...
@@ -1899,12 +2302,15 @@ def Usage():
print
(
' --help Show this help.'
)
print
(
' --help Show this help.'
)
print
(
' --mode=[Mode]'
)
print
(
' --mode=[Mode]'
)
print
(
' TesteNB'
)
print
(
' TesteNB'
)
print
(
' InitiateHtml, FinalizeHtml'
)
print
(
' TerminateeNB, TerminateUE, TerminateHSS, TerminateMME, TerminateSPGW'
)
print
(
' TerminateeNB, TerminateUE, TerminateHSS, TerminateMME, TerminateSPGW'
)
print
(
' LogCollectBuild, LogCollecteNB, LogCollectHSS, LogCollectMME, LogCollectSPGW, LogCollectPing, LogCollectIperf'
)
print
(
' LogCollectBuild, LogCollecteNB, LogCollectHSS, LogCollectMME, LogCollectSPGW, LogCollectPing, LogCollectIperf'
)
print
(
' --eNBIPAddress=[eNB
\'
s IP Address]'
)
print
(
' --eNBIPAddress=[eNB
\'
s IP Address]'
)
print
(
' --eNBRepository=[eNB
\'
s Repository URL]'
)
print
(
' --eNBRepository=[eNB
\'
s Repository URL]'
)
print
(
' --eNBBranch=[eNB
\'
s Branch Name]'
)
print
(
' --eNBBranch=[eNB
\'
s Branch Name]'
)
print
(
' --eNBCommitID=[eNB
\'
s Commit Number]'
)
print
(
' --eNBCommitID=[eNB
\'
s Commit Number]'
)
print
(
' --eNB_AllowMerge=[eNB
\'
s Allow Merge Request (with target branch)]'
)
print
(
' --eNBTargetBranch=[eNB
\'
s Target Branch in case of a Merge Request]'
)
print
(
' --eNBUserName=[eNB
\'
s Login User Name]'
)
print
(
' --eNBUserName=[eNB
\'
s Login User Name]'
)
print
(
' --eNBPassword=[eNB
\'
s Login Password]'
)
print
(
' --eNBPassword=[eNB
\'
s Login Password]'
)
print
(
' --eNBSourceCodePath=[eNB
\'
s Source Code Path]'
)
print
(
' --eNBSourceCodePath=[eNB
\'
s Source Code Path]'
)
...
@@ -1920,7 +2326,7 @@ def Usage():
...
@@ -1920,7 +2326,7 @@ def Usage():
print
(
'------------------------------------------------------------'
)
print
(
'------------------------------------------------------------'
)
def
CheckClassValidity
(
action
,
id
):
def
CheckClassValidity
(
action
,
id
):
if
action
!=
'Build_eNB'
and
action
!=
'Initialize_eNB'
and
action
!=
'Terminate_eNB'
and
action
!=
'Initialize_UE'
and
action
!=
'Terminate_UE'
and
action
!=
'Attach_UE'
and
action
!=
'Detach_UE'
and
action
!=
'Ping'
and
action
!=
'Iperf'
and
action
!=
'Reboot_UE'
and
action
!=
'Initialize_HSS'
and
action
!=
'Terminate_HSS'
and
action
!=
'Initialize_MME'
and
action
!=
'Terminate_MME'
and
action
!=
'Initialize_SPGW'
and
action
!=
'Terminate_SPGW'
:
if
action
!=
'Build_eNB'
and
action
!=
'Initialize_eNB'
and
action
!=
'Terminate_eNB'
and
action
!=
'Initialize_UE'
and
action
!=
'Terminate_UE'
and
action
!=
'Attach_UE'
and
action
!=
'Detach_UE'
and
action
!=
'Ping'
and
action
!=
'Iperf'
and
action
!=
'Reboot_UE'
and
action
!=
'Initialize_HSS'
and
action
!=
'Terminate_HSS'
and
action
!=
'Initialize_MME'
and
action
!=
'Terminate_MME'
and
action
!=
'Initialize_SPGW'
and
action
!=
'Terminate_SPGW'
and
action
!=
'Initialize_CatM_module'
and
action
!=
'Terminate_CatM_module'
and
action
!=
'Attach_CatM_module'
and
action
!=
'Detach_CatM_module'
and
action
!=
'IdleSleep'
:
logging
.
debug
(
'ERROR: test-case '
+
id
+
' has wrong class '
+
action
)
logging
.
debug
(
'ERROR: test-case '
+
id
+
' has wrong class '
+
action
)
return
False
return
False
return
True
return
True
...
@@ -1940,6 +2346,13 @@ def GetParametersFromXML(action):
...
@@ -1940,6 +2346,13 @@ def GetParametersFromXML(action):
if
(
SSH
.
eNB_instance
is
None
):
if
(
SSH
.
eNB_instance
is
None
):
SSH
.
eNB_instance
=
'0'
SSH
.
eNB_instance
=
'0'
if
action
==
'Attach_UE'
:
nbMaxUEtoAttach
=
test
.
findtext
(
'nbMaxUEtoAttach'
)
if
(
nbMaxUEtoAttach
is
None
):
SSH
.
nbMaxUEtoAttach
=
-
1
else
:
SSH
.
nbMaxUEtoAttach
=
int
(
nbMaxUEtoAttach
)
if
action
==
'Ping'
:
if
action
==
'Ping'
:
SSH
.
ping_args
=
test
.
findtext
(
'ping_args'
)
SSH
.
ping_args
=
test
.
findtext
(
'ping_args'
)
SSH
.
ping_packetloss_threshold
=
test
.
findtext
(
'ping_packetloss_threshold'
)
SSH
.
ping_packetloss_threshold
=
test
.
findtext
(
'ping_packetloss_threshold'
)
...
@@ -1955,6 +2368,13 @@ def GetParametersFromXML(action):
...
@@ -1955,6 +2368,13 @@ def GetParametersFromXML(action):
logging
.
debug
(
'ERROR: test-case has wrong profile '
+
SSH
.
iperf_profile
)
logging
.
debug
(
'ERROR: test-case has wrong profile '
+
SSH
.
iperf_profile
)
SSH
.
iperf_profile
=
'balanced'
SSH
.
iperf_profile
=
'balanced'
if
action
==
'IdleSleep'
:
string_field
=
test
.
findtext
(
'idle_sleep_time_in_sec'
)
if
(
string_field
is
None
):
SSH
.
idle_sleep_time
=
5
else
:
SSH
.
idle_sleep_time
=
int
(
string_field
)
#check if given test is in list
#check if given test is in list
#it is in list if one of the strings in 'list' is at the beginning of 'test'
#it is in list if one of the strings in 'list' is at the beginning of 'test'
def
test_in_list
(
test
,
list
):
def
test_in_list
(
test
,
list
):
...
@@ -2001,6 +2421,9 @@ while len(argvs) > 1:
...
@@ -2001,6 +2421,9 @@ while len(argvs) > 1:
elif
re
.
match
(
'^\-\-eNBCommitID=(.*)$'
,
myArgv
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^\-\-eNBCommitID=(.*)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-eNBCommitID=(.*)$'
,
myArgv
,
re
.
IGNORECASE
)
matchReg
=
re
.
match
(
'^\-\-eNBCommitID=(.*)$'
,
myArgv
,
re
.
IGNORECASE
)
SSH
.
eNBCommitID
=
matchReg
.
group
(
1
)
SSH
.
eNBCommitID
=
matchReg
.
group
(
1
)
elif
re
.
match
(
'^\-\-eNBTargetBranch=(.*)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-eNBTargetBranch=(.*)$'
,
myArgv
,
re
.
IGNORECASE
)
SSH
.
eNBTargetBranch
=
matchReg
.
group
(
1
)
elif
re
.
match
(
'^\-\-eNBUserName=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^\-\-eNBUserName=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-eNBUserName=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
matchReg
=
re
.
match
(
'^\-\-eNBUserName=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
SSH
.
eNBUserName
=
matchReg
.
group
(
1
)
SSH
.
eNBUserName
=
matchReg
.
group
(
1
)
...
@@ -2042,7 +2465,13 @@ while len(argvs) > 1:
...
@@ -2042,7 +2465,13 @@ while len(argvs) > 1:
SSH
.
ADBPassword
=
matchReg
.
group
(
1
)
SSH
.
ADBPassword
=
matchReg
.
group
(
1
)
elif
re
.
match
(
'^\-\-XMLTestFile=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^\-\-XMLTestFile=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-XMLTestFile=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
matchReg
=
re
.
match
(
'^\-\-XMLTestFile=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
SSH
.
testXMLfile
=
matchReg
.
group
(
1
)
SSH
.
testXMLfiles
.
append
(
matchReg
.
group
(
1
))
SSH
.
nbTestXMLfiles
+=
1
elif
re
.
match
(
'^\-\-finalStatus=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-finalStatus=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
finalStatus
=
matchReg
.
group
(
1
)
if
((
finalStatus
==
'true'
)
or
(
finalStatus
==
'True'
)):
SSH
.
finalStatus
=
True
else
:
else
:
Usage
()
Usage
()
sys
.
exit
(
'Invalid Parameter: '
+
myArgv
)
sys
.
exit
(
'Invalid Parameter: '
+
myArgv
)
...
@@ -2108,26 +2537,44 @@ elif re.match('^LogCollectIperf$', mode, re.IGNORECASE):
...
@@ -2108,26 +2537,44 @@ elif re.match('^LogCollectIperf$', mode, re.IGNORECASE):
Usage
()
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
sys
.
exit
(
'Insufficient Parameter'
)
SSH
.
LogCollectIperf
()
SSH
.
LogCollectIperf
()
elif
re
.
match
(
'^InitiateHtml$'
,
mode
,
re
.
IGNORECASE
):
if
SSH
.
ADBIPAddress
==
''
or
SSH
.
ADBUserName
==
''
or
SSH
.
ADBPassword
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
count
=
0
while
(
count
<
SSH
.
nbTestXMLfiles
):
xml_test_file
=
sys
.
path
[
0
]
+
"/"
+
SSH
.
testXMLfiles
[
count
]
xmlTree
=
ET
.
parse
(
xml_test_file
)
xmlRoot
=
xmlTree
.
getroot
()
SSH
.
htmlTabRefs
.
append
(
xmlRoot
.
findtext
(
'htmlTabRef'
,
default
=
'test-tab-'
+
str
(
count
)))
SSH
.
htmlTabNames
.
append
(
xmlRoot
.
findtext
(
'htmlTabName'
,
default
=
'Test-'
+
str
(
count
)))
SSH
.
htmlTabIcons
.
append
(
xmlRoot
.
findtext
(
'htmlTabIcon'
,
default
=
'info-sign'
))
count
+=
1
SSH
.
CreateHtmlHeader
()
elif
re
.
match
(
'^FinalizeHtml$'
,
mode
,
re
.
IGNORECASE
):
SSH
.
CreateHtmlFooter
(
SSH
.
finalStatus
)
elif
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
):
if
SSH
.
eNBIPAddress
==
''
or
SSH
.
eNBRepository
==
''
or
SSH
.
eNBBranch
==
''
or
SSH
.
eNBUserName
==
''
or
SSH
.
eNBPassword
==
''
or
SSH
.
eNBSourceCodePath
==
''
or
SSH
.
EPCIPAddress
==
''
or
SSH
.
EPCUserName
==
''
or
SSH
.
EPCPassword
==
''
or
SSH
.
EPCType
==
''
or
SSH
.
EPCSourceCodePath
==
''
or
SSH
.
ADBIPAddress
==
''
or
SSH
.
ADBUserName
==
''
or
SSH
.
ADBPassword
==
''
:
if
SSH
.
eNBIPAddress
==
''
or
SSH
.
eNBRepository
==
''
or
SSH
.
eNBBranch
==
''
or
SSH
.
eNBUserName
==
''
or
SSH
.
eNBPassword
==
''
or
SSH
.
eNBSourceCodePath
==
''
or
SSH
.
EPCIPAddress
==
''
or
SSH
.
EPCUserName
==
''
or
SSH
.
EPCPassword
==
''
or
SSH
.
EPCType
==
''
or
SSH
.
EPCSourceCodePath
==
''
or
SSH
.
ADBIPAddress
==
''
or
SSH
.
ADBUserName
==
''
or
SSH
.
ADBPassword
==
''
:
Usage
()
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
sys
.
exit
(
'Insufficient Parameter'
)
SSH
.
copyout
(
SSH
.
EPCIPAddress
,
SSH
.
EPCUserName
,
SSH
.
EPCPassword
,
sys
.
path
[
0
]
+
"/tcp_iperf_stats.awk"
,
"/tmp"
)
if
(
SSH
.
EPCIPAddress
!=
'none'
):
SSH
.
CreateHtmlHeader
(
)
SSH
.
copyout
(
SSH
.
EPCIPAddress
,
SSH
.
EPCUserName
,
SSH
.
EPCPassword
,
sys
.
path
[
0
]
+
"/tcp_iperf_stats.awk"
,
"/tmp"
)
SSH
.
copyout
(
SSH
.
EPCIPAddress
,
SSH
.
EPCUserName
,
SSH
.
EPCPassword
,
sys
.
path
[
0
]
+
"/active_net_interfaces.awk"
,
"/tmp"
)
#read test_case_list.xml file
#read test_case_list.xml file
# if no parameters for XML file, use default value
# if no parameters for XML file, use default value
if
SSH
.
testXMLfile
==
''
:
if
(
SSH
.
nbTestXMLfiles
!=
1
)
:
xml_test_file
=
sys
.
path
[
0
]
+
"/test_case_list.xml"
xml_test_file
=
sys
.
path
[
0
]
+
"/test_case_list.xml"
else
:
else
:
xml_test_file
=
sys
.
path
[
0
]
+
"/"
+
SSH
.
testXMLfile
xml_test_file
=
sys
.
path
[
0
]
+
"/"
+
SSH
.
testXMLfile
s
[
0
]
xmlTree
=
ET
.
parse
(
xml_test_file
)
xmlTree
=
ET
.
parse
(
xml_test_file
)
xmlRoot
=
xmlTree
.
getroot
()
xmlRoot
=
xmlTree
.
getroot
()
exclusion_tests
=
xmlRoot
.
findtext
(
'TestCaseExclusionList'
,
default
=
''
)
exclusion_tests
=
xmlRoot
.
findtext
(
'TestCaseExclusionList'
,
default
=
''
)
requested_tests
=
xmlRoot
.
findtext
(
'TestCaseRequestedList'
,
default
=
''
)
requested_tests
=
xmlRoot
.
findtext
(
'TestCaseRequestedList'
,
default
=
''
)
if
(
SSH
.
nbTestXMLfiles
==
1
):
SSH
.
htmlTabRefs
.
append
(
xmlRoot
.
findtext
(
'htmlTabRef'
,
default
=
'test-tab-0'
))
all_tests
=
xmlRoot
.
findall
(
'testCase'
)
all_tests
=
xmlRoot
.
findall
(
'testCase'
)
exclusion_tests
=
exclusion_tests
.
split
()
exclusion_tests
=
exclusion_tests
.
split
()
...
@@ -2165,6 +2612,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
...
@@ -2165,6 +2612,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
signal
.
signal
(
signal
.
SIGUSR1
,
receive_signal
)
signal
.
signal
(
signal
.
SIGUSR1
,
receive_signal
)
SSH
.
CreateHtmlTabHeader
()
for
test_case_id
in
todo_tests
:
for
test_case_id
in
todo_tests
:
for
test
in
all_tests
:
for
test
in
all_tests
:
id
=
test
.
get
(
'id'
)
id
=
test
.
get
(
'id'
)
...
@@ -2194,6 +2643,14 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
...
@@ -2194,6 +2643,14 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
SSH
.
AttachUE
()
SSH
.
AttachUE
()
elif
action
==
'Detach_UE'
:
elif
action
==
'Detach_UE'
:
SSH
.
DetachUE
()
SSH
.
DetachUE
()
elif
action
==
'Initialize_CatM_module'
:
SSH
.
InitializeCatM
()
elif
action
==
'Terminate_CatM_module'
:
SSH
.
TerminateCatM
()
elif
action
==
'Attach_CatM_module'
:
SSH
.
AttachCatM
()
elif
action
==
'Detach_CatM_module'
:
SSH
.
TerminateCatM
()
elif
action
==
'Ping'
:
elif
action
==
'Ping'
:
SSH
.
Ping
()
SSH
.
Ping
()
elif
action
==
'Iperf'
:
elif
action
==
'Iperf'
:
...
@@ -2212,10 +2669,12 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
...
@@ -2212,10 +2669,12 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
SSH
.
InitializeSPGW
()
SSH
.
InitializeSPGW
()
elif
action
==
'Terminate_SPGW'
:
elif
action
==
'Terminate_SPGW'
:
SSH
.
TerminateSPGW
()
SSH
.
TerminateSPGW
()
elif
action
==
'IdleSleep'
:
SSH
.
IdleSleep
()
else
:
else
:
sys
.
exit
(
'Invalid action'
)
sys
.
exit
(
'Invalid action'
)
SSH
.
CreateHtmlFooter
(
True
)
SSH
.
CreateHtml
Tab
Footer
(
True
)
else
:
else
:
Usage
()
Usage
()
sys
.
exit
(
'Invalid mode'
)
sys
.
exit
(
'Invalid mode'
)
...
...
ci-scripts/tcp_iperf_stats.awk
View file @
cc4182a3
#/*
# * 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
# */
BEGIN
{
max
=
0
;
min
=
10000
}
BEGIN
{
max
=
0
;
min
=
10000
}
{
{
if
(
$0
~
/Mbits/
)
{
if
(
$0
~
/Mbits/
)
{
...
...
ci-scripts/xml_files/enb_usrp210_band40_build.xml
0 → 100644
View file @
cc4182a3
<!--
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
050101 060101 070101
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP)
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
</testCase>
<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>
ci-scripts/xml_files/enb_usrp210_band40_epc_closure.xml
0 → 100644
View file @
cc4182a3
<!--
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>
ci-scripts/xml_files/enb_usrp210_band40_test_05mhz_tm1.xml
0 → 100644
View file @
cc4182a3
<!--
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-05-tm1
</htmlTabRef>
<htmlTabName>
Test-05MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
040101
030104 040301 040501 040602 040601 040603 040642 040641 040643 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030104"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040501"
>
<class>
Ping
</class>
<desc>
ping (5MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040601"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040602"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040603"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040641"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040642"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040643"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/enb_usrp
b210_band40
.xml
→
ci-scripts/xml_files/enb_usrp
210_band40_test_10mhz_tm1
.xml
View file @
cc4182a3
...
@@ -21,43 +21,21 @@
...
@@ -21,43 +21,21 @@
-->
-->
<testCaseList>
<testCaseList>
<htmlTabRef>
test-10-tm1
</htmlTabRef>
<htmlTabName>
Test-10MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
<TestCaseRequestedList>
010101
040101
050101 060101 070101 040101
030104 040301 040501 040602 040601 040603 040642 040641 040643 040401 040201 030201
030114 040301 040511 040612 040611 040613 040652 040651 040653 040401 040201 030201
030114 040301 040511 040612 040611 040613 040652 040651 040653 040401 040201 030201
050201 060201 070201
</TestCaseRequestedList>
</TestCaseRequestedList>
<!-- 20MHz is not stable enough to be run -->
<!--
030124 040301 040521 040622 040621 040623 040662 040661 040663 040401 040201 030201
-->
<TestCaseExclusionList></TestCaseExclusionList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP)
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
</testCase>
<testCase
id=
"030104"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030114"
>
<testCase
id=
"030114"
>
<class>
Initialize_eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/10MHz/info)
</desc>
<desc>
Initialize eNB (TDD/Band40/10MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf
--codingw --fepw
</Initialize_eNB_args>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
</testCase>
</testCase>
<testCase
id=
"030106"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/20MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
<desc>
Terminate eNB
</desc>
...
@@ -83,13 +61,6 @@
...
@@ -83,13 +61,6 @@
<desc>
Detach UE
</desc>
<desc>
Detach UE
</desc>
</testCase>
</testCase>
<testCase
id=
"040501"
>
<class>
Ping
</class>
<desc>
ping (5MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040511"
>
<testCase
id=
"040511"
>
<class>
Ping
</class>
<class>
Ping
</class>
<desc>
ping (10MHz - 20 sec)
</desc>
<desc>
ping (10MHz - 20 sec)
</desc>
...
@@ -97,30 +68,6 @@
...
@@ -97,30 +68,6 @@
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
</testCase>
<testCase
id=
"040601"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040602"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040603"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040611"
>
<testCase
id=
"040611"
>
<class>
Iperf
</class>
<class>
Iperf
</class>
<desc>
iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(balanced)
</desc>
<desc>
iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(balanced)
</desc>
...
@@ -145,30 +92,6 @@
...
@@ -145,30 +92,6 @@
<iperf_profile>
unbalanced
</iperf_profile>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
</testCase>
<testCase
id=
"040641"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040642"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040643"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040651"
>
<testCase
id=
"040651"
>
<class>
Iperf
</class>
<class>
Iperf
</class>
<desc>
iperf (10MHz - UL/2Mbps/UDP)(30 sec)(balanced)
</desc>
<desc>
iperf (10MHz - UL/2Mbps/UDP)(30 sec)(balanced)
</desc>
...
@@ -193,34 +116,4 @@
...
@@ -193,34 +116,4 @@
<iperf_profile>
unbalanced
</iperf_profile>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
</testCase>
<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>
<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>
</testCaseList>
ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1.xml
0 → 100644
View file @
cc4182a3
<!--
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-20-tm1
</htmlTabRef>
<htmlTabName>
Test-20MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
040101
030124 040301 040521 040622 040621 040623 040662 040661 040663 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030124"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/20MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040621"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040622"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040623"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040661"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040663"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/enb_usrp210_band40_tracer.xml
0 → 100644
View file @
cc4182a3
<!--
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>
tracer-test
</htmlTabRef>
<htmlTabName>
T-Tracer
</htmlTabName>
<htmlTabIcon>
duplicate
</htmlTabIcon>
<TestCaseRequestedList>
040101
030100 040300 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030100"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/5MHz) with T Tracer on
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf --T_stdout 0
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040300"
>
<class>
Attach_UE
</class>
<desc>
Attach single UE
</desc>
<nbMaxUEtoAttach>
1
</nbMaxUEtoAttach>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
</testCaseList>
ci-scripts/xml_files/enb_usrp210_band7_build.xml
0 → 100644
View file @
cc4182a3
<!--
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
050101 060101 070101
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP)
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
</testCase>
<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>
ci-scripts/xml_files/enb_usrp210_band7_epc_closure.xml
0 → 100644
View file @
cc4182a3
<!--
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>
ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
0 → 100644
View file @
cc4182a3
<!--
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-05-tm1
</htmlTabRef>
<htmlTabName>
Test-05MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
040101
030101 040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030101"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (FDD/Band7/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040501"
>
<class>
Ping
</class>
<desc>
ping (5MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040603"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 15M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040604"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 15M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040605"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile)
</desc>
<iperf_args>
-u -b 15M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040606"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040607"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040641"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 9M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040642"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 9M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040643"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040644"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/enb_usrp210_band7.xml
→
ci-scripts/xml_files/enb_usrp210_band7
_test_10mhz_tm1
.xml
View file @
cc4182a3
...
@@ -21,38 +21,19 @@
...
@@ -21,38 +21,19 @@
-->
-->
<testCaseList>
<testCaseList>
<htmlTabRef>
test-10-tm1
</htmlTabRef>
<htmlTabName>
Test-10MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
<TestCaseRequestedList>
010101
040101
050101 060101 070101 040101
030101 040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201 030201
030111 040301 040511 040613 040614 040615 040616 040617 040651 040652 040653 040654 040401 040201 030201
030111 040301 040511 040613 040614 040615 040616 040617 040651 040652 040653 040654 040401 040201 030201
030121 040301 040521 040623 040624 040625 040626 040627 040662 040661 040663 040664 040401 040201 030201
050201 060201 070201
</TestCaseRequestedList>
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP)
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
</testCase>
<testCase
id=
"030101"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (FDD/Band7/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030111"
>
<testCase
id=
"030111"
>
<class>
Initialize_eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (FDD/Band7/10MHz)
</desc>
<desc>
Initialize eNB (FDD/Band7/10MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030121"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (FDD/Band7/20MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
</testCase>
</testCase>
<testCase
id=
"030201"
>
<testCase
id=
"030201"
>
...
@@ -80,13 +61,6 @@
...
@@ -80,13 +61,6 @@
<desc>
Detach UE
</desc>
<desc>
Detach UE
</desc>
</testCase>
</testCase>
<testCase
id=
"040501"
>
<class>
Ping
</class>
<desc>
ping (5MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040511"
>
<testCase
id=
"040511"
>
<class>
Ping
</class>
<class>
Ping
</class>
<desc>
ping (10MHz - 20 sec)
</desc>
<desc>
ping (10MHz - 20 sec)
</desc>
...
@@ -94,85 +68,6 @@
...
@@ -94,85 +68,6 @@
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040603"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 15M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040604"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 15M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040605"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile)
</desc>
<iperf_args>
-u -b 15M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040606"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040607"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040641"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 9M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040642"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 9M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040643"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040644"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040613"
>
<testCase
id=
"040613"
>
<class>
Iperf
</class>
<class>
Iperf
</class>
<desc>
iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile)
</desc>
<desc>
iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile)
</desc>
...
@@ -245,106 +140,4 @@
...
@@ -245,106 +140,4 @@
<iperf_profile>
balanced
</iperf_profile>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
</testCase>
<testCase
id=
"040623"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040624"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040625"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(unbalanced profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040626"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040627"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040661"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/20Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 20M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/20Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 20M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040663"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040664"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<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>
<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>
</testCaseList>
ci-scripts/xml_files/enb_usrp210_band7_test_20mhz_tm1.xml
0 → 100644
View file @
cc4182a3
<!--
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-20-tm1
</htmlTabRef>
<htmlTabName>
Test-20MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
040101
030121 040301 040521 040623 040624 040625 040662 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList>
040626 040627 040661 040663 040664
</TestCaseExclusionList>
<testCase
id=
"030121"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (FDD/Band7/20MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040623"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040624"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040625"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(unbalanced profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040626"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040627"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040661"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/12Mbps/UDP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-u -b 12M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/17Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 17M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040663"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/TCP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040664"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/TCP)(30 sec)(balanced profile)
</desc>
<iperf_args>
-t 30 -i 1 -fm -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/enb_usrp210_band7_tracer.xml
0 → 100644
View file @
cc4182a3
<!--
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>
tracer-test
</htmlTabRef>
<htmlTabName>
T-Tracer
</htmlTabName>
<htmlTabIcon>
duplicate
</htmlTabIcon>
<TestCaseRequestedList>
040101
030100 040300 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030100"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (FDD/Band7/5MHz) with T Tracer on
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf --T_stdout 0
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040300"
>
<class>
Attach_UE
</class>
<desc>
Attach single UE
</desc>
<nbMaxUEtoAttach>
1
</nbMaxUEtoAttach>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band40_build.xml
0 → 100644
View file @
cc4182a3
<!--
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
050101 060101 070101
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP -- Ethernet Fronthaul)
</desc>
<Build_eNB_args>
-t ETHERNET -w USRP -c --eNB
</Build_eNB_args>
</testCase>
<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>
ci-scripts/xml_files/if4p5_usrp210_band40_epc_closure.xml
0 → 100644
View file @
cc4182a3
<!--
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>
ci-scripts/xml_files/if4p5_usrp210_band40_test_05mhz.xml
0 → 100644
View file @
cc4182a3
<!--
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-05
</htmlTabRef>
<htmlTabName>
Test-05MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
040101
030104 030105 040301 040501 040602 040642 040401 040201 030201 030202
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase
id=
"030104"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030105"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band40/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030202"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RRU
</desc>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040501"
>
<class>
Ping
</class>
<desc>
ping (5MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040602"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040642"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band40.xml
→
ci-scripts/xml_files/if4p5_usrp210_band40
_test_10mhz
.xml
View file @
cc4182a3
...
@@ -21,70 +21,37 @@
...
@@ -21,70 +21,37 @@
-->
-->
<testCaseList>
<testCaseList>
<!-- Only 5MHz is tested since neither 10MHz nor 20MHz work in this configuration -->
<htmlTabRef>
test-10
</htmlTabRef>
<!-- Also no UL iperf in 5MHz (040642) -->
<htmlTabName>
Test-10MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
<TestCaseRequestedList>
010101
000001
050101 060101 070101 040101
030104 030105 040301 040501 040602 040401 040201 030201 030202
050201 060201 070201
</TestCaseRequestedList>
</TestCaseRequestedList>
<!--
030104 030105 040301 040501 040602 040642 040401 040201 030201 030202
030114 030115 040301 040511 040612 040652 040401 040201 030201 030202
030124 030125 040301 040521 040622 040662 040401 040201 030201 030202
-->
<TestCaseExclusionList>
<TestCaseExclusionList>
040101
030114 030115 040301 040511 040612 040652 040401 040201 030201 030202
</TestCaseExclusionList>
</TestCaseExclusionList>
<testCase
id=
"0
101
01"
>
<testCase
id=
"0
000
01"
>
<class>
Build_eNB
</class>
<class>
IdleSleep
</class>
<desc>
Build eNB (USRP -- Ethernet Fronthaul)
</desc>
<desc>
No Test in IF4.5 for FDD-10MHz
</desc>
<
Build_eNB_args>
-t ETHERNET -w USRP -c --eNB
</Build_eNB_args
>
<
idle_sleep_time_in_sec>
10
</idle_sleep_time_in_sec
>
</testCase>
</testCase>
<testCase
id=
"030104"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030105"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band40/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030114"
>
<testCase
id=
"030114"
>
<class>
Initialize_eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf
--codingw --fepw
</Initialize_eNB_args>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_instance>
0
</eNB_instance>
</testCase>
</testCase>
<testCase
id=
"030115"
>
<testCase
id=
"030115"
>
<class>
Initialize_eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band40/10MHz/info)
</desc>
<desc>
Initialize RCC (TDD/Band40/10MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf
--codingw --fepw
</Initialize_eNB_args>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
<eNB_instance>
1
</eNB_instance>
</testCase>
</testCase>
<testCase
id=
"030124"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030125"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band40/20MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030201"
>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<desc>
Terminate RCC
</desc>
...
@@ -117,13 +84,6 @@
...
@@ -117,13 +84,6 @@
<desc>
Detach UE
</desc>
<desc>
Detach UE
</desc>
</testCase>
</testCase>
<testCase
id=
"040501"
>
<class>
Ping
</class>
<desc>
ping (5MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040511"
>
<testCase
id=
"040511"
>
<class>
Ping
</class>
<class>
Ping
</class>
<desc>
ping (10MHz - 20 sec)
</desc>
<desc>
ping (10MHz - 20 sec)
</desc>
...
@@ -131,21 +91,6 @@
...
@@ -131,21 +91,6 @@
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040602"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 6.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040612"
>
<testCase
id=
"040612"
>
<class>
Iperf
</class>
<class>
Iperf
</class>
<desc>
iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<desc>
iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
...
@@ -154,22 +99,6 @@
...
@@ -154,22 +99,6 @@
<iperf_profile>
single-ue
</iperf_profile>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCase>
<testCase
id=
"040622"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040642"
>
<class>
Iperf
</class>
<desc>
iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040652"
>
<testCase
id=
"040652"
>
<class>
Iperf
</class>
<class>
Iperf
</class>
<desc>
iperf (10MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<desc>
iperf (10MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
...
@@ -178,42 +107,4 @@
...
@@ -178,42 +107,4 @@
<iperf_profile>
single-ue
</iperf_profile>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<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>
<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>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz.xml
0 → 100644
View file @
cc4182a3
<!--
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-20
</htmlTabRef>
<htmlTabName>
Test-20MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
000001
</TestCaseRequestedList>
<TestCaseExclusionList>
040101
030124 030125 040301 040521 040622 040662 040401 040201 030201 030202
</TestCaseExclusionList>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
No Test in IF4.5 for FDD-20MHz
</desc>
<idle_sleep_time_in_sec>
10
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"030124"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030125"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band40/20MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030202"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RRU
</desc>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040622"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band7_build.xml
0 → 100644
View file @
cc4182a3
<!--
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
050101 060101 070101 040101
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP -- Ethernet Fronthaul)
</desc>
<Build_eNB_args>
-t ETHERNET -w USRP -c --eNB
</Build_eNB_args>
</testCase>
<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>
ci-scripts/xml_files/if4p5_usrp210_band7_epc_closure.xml
0 → 100644
View file @
cc4182a3
<!--
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>
ci-scripts/xml_files/if4p5_usrp210_band7.xml
→
ci-scripts/xml_files/if4p5_usrp210_band7
_test_05mhz
.xml
View file @
cc4182a3
...
@@ -21,65 +21,27 @@
...
@@ -21,65 +21,27 @@
-->
-->
<testCaseList>
<testCaseList>
<!-- Only 5MHz is tested since neither 10MHz nor 20MHz work in this configuration -->
<htmlTabRef>
test-05
</htmlTabRef>
<htmlTabName>
Test-05MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
<TestCaseRequestedList>
010101
040101
050101 060101 070101 040101
030101 030102 040301 040501 040604 040642 040401 040201 030201 030202
030101 030102 040301 040501 040604 040642 040401 040201 030201 030202
050201 060201 070201
</TestCaseRequestedList>
</TestCaseRequestedList>
<!--
030111 030112 040301 040511 040614 040652 040401 040201 030201 030202
030121 030122 040301 040521 040624 040662 040401 040201 030201 030202
-->
<TestCaseExclusionList>
<TestCaseExclusionList>
</TestCaseExclusionList>
</TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build eNB (USRP -- Ethernet Fronthaul)
</desc>
<Build_eNB_args>
-t ETHERNET -w USRP -c --eNB
</Build_eNB_args>
</testCase>
<testCase
id=
"030101"
>
<testCase
id=
"030101"
>
<class>
Initialize_eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (FDD/Band7)
</desc>
<desc>
Initialize RRU (FDD/Band7)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.fdd.band7.conf
--codingw --fepw
</Initialize_eNB_args>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.fdd.band7.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
<eNB_instance>
1
</eNB_instance>
</testCase>
</testCase>
<testCase
id=
"030102"
>
<testCase
id=
"030102"
>
<class>
Initialize_eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (FDD/Band7/5MHz)
</desc>
<desc>
Initialize RCC (FDD/Band7/5MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030111"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (FDD/Band7)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.fdd.band7.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030112"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (FDD/Band7/10MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030121"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (FDD/Band7)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.fdd.band7.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030122"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (FDD/Band7/20MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf --codingw --fepw
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_instance>
0
</eNB_instance>
</testCase>
</testCase>
...
@@ -138,80 +100,4 @@
...
@@ -138,80 +100,4 @@
<iperf_profile>
single-ue
</iperf_profile>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCase>
<testCase
id=
"040511"
>
<class>
Ping
</class>
<desc>
ping (10MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040614"
>
<class>
Iperf
</class>
<desc>
iperf (10MHz - DL/32Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 32M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040652"
>
<class>
Iperf
</class>
<desc>
iperf (10MHz - UL/20Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 20M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040624"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 70M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/20Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 20M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<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>
<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>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band7_test_10mhz.xml
0 → 100644
View file @
cc4182a3
<!--
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-10
</htmlTabRef>
<htmlTabName>
Test-10MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
000001
</TestCaseRequestedList>
<TestCaseExclusionList>
040101
030111 030112 040301 040511 040614 040652 040401 040201 030201 030202
</TestCaseExclusionList>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
No Test in IF4.5 for FDD-10MHz
</desc>
<idle_sleep_time_in_sec>
10
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"030111"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (FDD/Band7)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.fdd.band7.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030112"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (FDD/Band7/10MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030202"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RRU
</desc>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040511"
>
<class>
Ping
</class>
<desc>
ping (10MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040614"
>
<class>
Iperf
</class>
<desc>
iperf (10MHz - DL/32Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 32M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040652"
>
<class>
Iperf
</class>
<desc>
iperf (10MHz - UL/5Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 5M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
60
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band7_test_20mhz.xml
0 → 100644
View file @
cc4182a3
<!--
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-20
</htmlTabRef>
<htmlTabName>
Test-20MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
000001
</TestCaseRequestedList>
<TestCaseExclusionList>
040101
030121 030122 040301 040521 040624 040662 040401 040201 030201 030202
</TestCaseExclusionList>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
No Test in IF4.5 for FDD-20MHz
</desc>
<idle_sleep_time_in_sec>
10
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"030121"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (FDD/Band7)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.fdd.band7.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030122"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (FDD/Band7/20MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030202"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RRU
</desc>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
5
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040624"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/50Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 50M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/10Mbps/UDP)(30 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 10M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCaseList>
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
View file @
cc4182a3
...
@@ -54,7 +54,7 @@ int32_t nrLDPC_decoder(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t*
...
@@ -54,7 +54,7 @@ int32_t nrLDPC_decoder(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t*
t_nrLDPC_lut
lut
;
t_nrLDPC_lut
lut
;
t_nrLDPC_lut
*
p_lut
=
&
lut
;
t_nrLDPC_lut
*
p_lut
=
&
lut
;
printf
(
"p_procBuf->cnProcBuf = %p
\n
"
,
p_procBuf
->
cnProcBuf
);
//
printf("p_procBuf->cnProcBuf = %p\n", p_procBuf->cnProcBuf);
// Initialize decoder core(s) with correct LUTs
// Initialize decoder core(s) with correct LUTs
numLLR
=
nrLDPC_init
(
p_decParams
,
p_lut
);
numLLR
=
nrLDPC_init
(
p_decParams
,
p_lut
);
...
...
openair1/PHY/CODING/nr_rate_matching.c
View file @
cc4182a3
...
@@ -182,6 +182,7 @@ int nr_rate_matching_ldpc_rx(uint8_t Ilbrm,
...
@@ -182,6 +182,7 @@ int nr_rate_matching_ldpc_rx(uint8_t Ilbrm,
#endif
#endif
}
}
if
(
rvidx
!=
0
){
while
(
k
<
E
)
{
while
(
k
<
E
)
{
for
(
ind
=
0
;
(
ind
<
Ncb
)
&&
(
k
<
E
);
ind
++
)
{
for
(
ind
=
0
;
(
ind
<
Ncb
)
&&
(
k
<
E
);
ind
++
)
{
if
(
soft_input
[
ind
]
!=
NR_NULL
)
{
if
(
soft_input
[
ind
]
!=
NR_NULL
)
{
...
@@ -200,6 +201,7 @@ int nr_rate_matching_ldpc_rx(uint8_t Ilbrm,
...
@@ -200,6 +201,7 @@ int nr_rate_matching_ldpc_rx(uint8_t Ilbrm,
#endif
#endif
}
}
}
}
}
return
0
;
return
0
;
}
}
openair1/PHY/CODING/nr_segmentation.c
View file @
cc4182a3
...
@@ -156,7 +156,7 @@ else
...
@@ -156,7 +156,7 @@ else
if
(
*
F
>
0
)
{
if
(
*
F
>
0
)
{
for
(
k
=
Kprime
>>
3
;
k
<
(
*
K
)
>>
3
;
k
++
)
{
for
(
k
=
Kprime
>>
3
;
k
<
(
*
K
)
>>
3
;
k
++
)
{
output_buffers
[
r
][
k
]
=
NR_NULL
;
output_buffers
[
r
][
k
]
=
0
;
//printf("r %d filler bits [%d] = %d Kprime %d \n", r,k, output_buffers[r][k], Kprime);
//printf("r %d filler bits [%d] = %d Kprime %d \n", r,k, output_buffers[r][k], Kprime);
}
}
}
}
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
View file @
cc4182a3
...
@@ -277,17 +277,18 @@ int nr_dlsch_encoding(unsigned char *a,
...
@@ -277,17 +277,18 @@ int nr_dlsch_encoding(unsigned char *a,
nfapi_nr_dl_config_dlsch_pdu_rel15_t
rel15
=
dlsch
->
harq_processes
[
harq_pid
]
->
dlsch_pdu
.
dlsch_pdu_rel15
;
nfapi_nr_dl_config_dlsch_pdu_rel15_t
rel15
=
dlsch
->
harq_processes
[
harq_pid
]
->
dlsch_pdu
.
dlsch_pdu_rel15
;
uint16_t
nb_rb
=
rel15
.
n_prb
;
uint16_t
nb_rb
=
rel15
.
n_prb
;
uint8_t
nb_symb_sch
=
rel15
.
nb_symbols
;
uint8_t
nb_symb_sch
=
rel15
.
nb_symbols
;
uint32_t
A
,
Z
;
uint32_t
A
,
Z
,
F
=
0
;
uint32_t
*
pz
=
&
Z
;
uint32_t
*
pz
=
&
Z
;
uint8_t
mod_order
=
rel15
.
modulation_order
;
uint8_t
mod_order
=
rel15
.
modulation_order
;
uint16_t
Kr
=
0
,
r
,
r_offset
=
0
,
Kr_bytes
;
uint16_t
Kr
=
0
,
r
,
r_offset
=
0
,
Kr_bytes
;
uint8_t
*
d_tmp
[
MAX_NUM_DLSCH_SEGMENTS
];
uint8_t
*
d_tmp
[
MAX_NUM_DLSCH_SEGMENTS
];
uint8_t
kb
,
BG
=
1
;
uint8_t
BG
=
1
;
uint32_t
E
;
uint32_t
E
;
uint8_t
Ilbrm
=
0
;
uint8_t
Ilbrm
=
0
;
uint32_t
Tbslbrm
=
950984
;
//max tbs
uint32_t
Tbslbrm
=
950984
;
//max tbs
uint8_t
nb_re_dmrs
=
rel15
.
nb_re_dmrs
;
uint8_t
nb_re_dmrs
=
rel15
.
nb_re_dmrs
;
uint16_t
length_dmrs
=
1
;
uint16_t
length_dmrs
=
1
;
float
Coderate
=
0
.
0
;
/*
/*
uint8_t *channel_input[MAX_NUM_DLSCH_SEGMENTS]; //unsigned char
uint8_t *channel_input[MAX_NUM_DLSCH_SEGMENTS]; //unsigned char
...
@@ -337,18 +338,20 @@ int nr_dlsch_encoding(unsigned char *a,
...
@@ -337,18 +338,20 @@ int nr_dlsch_encoding(unsigned char *a,
pz
,
pz
,
&
dlsch
->
harq_processes
[
harq_pid
]
->
F
);
&
dlsch
->
harq_processes
[
harq_pid
]
->
F
);
kb
=
dlsch
->
harq_processes
[
harq_pid
]
->
K
/
(
*
pz
);
F
=
dlsch
->
harq_processes
[
harq_pid
]
->
F
;
if
(
kb
==
22
){
Coderate
=
(
float
)
A
/
(
float
)
G
;
BG
=
1
;
if
((
A
<=
292
)
||
((
A
<=
3824
)
&&
(
Coderate
<=
0
.
6667
))
||
Coderate
<=
0
.
25
){
BG
=
2
;
}
}
else
{
else
{
BG
=
2
;
BG
=
1
;
}
}
Kr
=
dlsch
->
harq_processes
[
harq_pid
]
->
K
;
Kr
=
dlsch
->
harq_processes
[
harq_pid
]
->
K
;
Kr_bytes
=
Kr
>>
3
;
Kr_bytes
=
Kr
>>
3
;
//printf("segment Z %d k
b %d k %d Kr %d BG %d\n", *pz,kb
,dlsch->harq_processes[harq_pid]->K,Kr,BG);
//printf("segment Z %d k
%d Kr %d BG %d\n", *pz
,dlsch->harq_processes[harq_pid]->K,Kr,BG);
//start_meas(te_stats);
//start_meas(te_stats);
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
...
@@ -393,6 +396,14 @@ int nr_dlsch_encoding(unsigned char *a,
...
@@ -393,6 +396,14 @@ int nr_dlsch_encoding(unsigned char *a,
}
}
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
F
>
0
)
{
for
(
int
k
=
(
Kr
-
F
-
2
*
(
*
pz
));
k
<
Kr
-
2
*
(
*
pz
);
k
++
)
{
dlsch
->
harq_processes
[
harq_pid
]
->
d
[
r
][
k
]
=
NR_NULL
;
//if (k<(Kr-F+8))
//printf("r %d filler bits [%d] = %d \n", r,k, dlsch->harq_processes[harq_pid]->d[r][k]);
}
}
#ifdef DEBUG_DLSCH_CODING
#ifdef DEBUG_DLSCH_CODING
printf
(
"Rate Matching, Code segment %d (coded bits (G) %d,unpunctured/repeated bits per code segment %d,mod_order %d, nb_rb %d)...
\n
"
,
printf
(
"Rate Matching, Code segment %d (coded bits (G) %d,unpunctured/repeated bits per code segment %d,mod_order %d, nb_rb %d)...
\n
"
,
r
,
r
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
cc4182a3
...
@@ -218,8 +218,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -218,8 +218,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
uint32_t
A
,
E
;
uint32_t
A
,
E
;
uint32_t
G
;
uint32_t
G
;
uint32_t
ret
,
offset
;
uint32_t
ret
,
offset
;
int32_t
no_iteration_ldpc
;
int32_t
no_iteration_ldpc
,
length_dec
;
//short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t
r
,
r_offset
=
0
,
Kr
=
8424
,
Kr_bytes
,
K_bytes_F
,
err_flag
=
0
;
uint32_t
r
,
r_offset
=
0
,
Kr
=
8424
,
Kr_bytes
,
K_bytes_F
,
err_flag
=
0
;
uint8_t
crc_type
;
uint8_t
crc_type
;
int8_t
llrProcBuf
[
OAI_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
OAI_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
...
@@ -233,17 +232,15 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -233,17 +232,15 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
int8_t
l
[
68
*
384
];
int8_t
l
[
68
*
384
];
//__m128i l;
//__m128i l;
int16_t
inv_d
[
68
*
384
];
int16_t
inv_d
[
68
*
384
];
// int16_t *p_invd =&inv_d;
uint8_t
kc
;
uint8_t
kb
,
kc
;
uint8_t
Ilbrm
=
0
;
uint8_t
Ilbrm
=
0
;
uint32_t
Tbslbrm
=
950984
;
uint32_t
Tbslbrm
=
950984
;
uint16_t
nb_rb
=
30
;
//to update
uint16_t
nb_rb
=
30
;
//to update
//uint16_t nb_symb_sch = 12;
uint8_t
nb_re_dmrs
=
6
;
uint8_t
nb_re_dmrs
=
6
;
uint16_t
length_dmrs
=
1
;
uint16_t
length_dmrs
=
1
;
double
Coderate
=
0
.
0
;
uint32_t
i
,
j
;
uint32_t
i
,
j
;
// uint32_t k;
__m128i
*
pv
=
(
__m128i
*
)
&
z
;
__m128i
*
pv
=
(
__m128i
*
)
&
z
;
__m128i
*
pl
=
(
__m128i
*
)
&
l
;
__m128i
*
pl
=
(
__m128i
*
)
&
l
;
...
@@ -322,21 +319,41 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -322,21 +319,41 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
printf
(
"K %d C %d Z %d nl %d
\n
"
,
harq_process
->
K
,
harq_process
->
C
,
p_decParams
->
Z
,
harq_process
->
Nl
);
printf
(
"K %d C %d Z %d nl %d
\n
"
,
harq_process
->
K
,
harq_process
->
C
,
p_decParams
->
Z
,
harq_process
->
Nl
);
#endif
#endif
}
}
Coderate
=
(
float
)
A
/
(
float
)
G
;
kb
=
harq_process
->
K
/
harq_process
->
Z
;
if
((
A
<=
292
)
||
((
A
<=
3824
)
&&
(
Coderate
<=
0
.
6667
))
||
Coderate
<=
0
.
25
){
if
(
kb
==
22
){
p_decParams
->
BG
=
2
;
p_decParams
->
BG
=
1
;
if
(
Coderate
<
0
.
3333
){
p_decParams
->
R
=
13
;
p_decParams
->
R
=
15
;
kc
=
68
;
kc
=
52
;
}
else
if
(
Coderate
<
0
.
6667
){
p_decParams
->
R
=
13
;
kc
=
32
;
}
else
{
p_decParams
->
R
=
23
;
kc
=
17
;
}
}
}
else
{
else
{
p_decParams
->
BG
=
2
;
p_decParams
->
BG
=
1
;
p_decParams
->
R
=
13
;
if
(
Coderate
<
0
.
6667
){
kc
=
52
;
p_decParams
->
R
=
13
;
}
kc
=
68
;
}
else
if
(
Coderate
<
0
.
8889
){
p_decParams
->
R
=
23
;
kc
=
35
;
}
else
{
p_decParams
->
R
=
89
;
kc
=
27
;
}
}
//printf("coderate %f kc %d \n", Coderate, kc);
p_decParams
->
numMaxIter
=
dlsch
->
max_ldpc_iterations
;
p_decParams
->
numMaxIter
=
dlsch
->
max_ldpc_iterations
;
Kr
=
p_decParams
->
Z
*
kb
;
p_decParams
->
outMode
=
0
;
p_decParams
->
outMode
=
0
;
...
@@ -453,54 +470,38 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -453,54 +470,38 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
memset
(
harq_process
->
c
[
r
],
0
,
Kr_bytes
);
memset
(
harq_process
->
c
[
r
],
0
,
Kr_bytes
);
// printf("done\n");
// printf("done\n");
if
(
harq_process
->
C
==
1
)
if
(
harq_process
->
C
==
1
)
{
crc_type
=
CRC24_A
;
crc_type
=
CRC24_A
;
else
length_dec
=
harq_process
->
B
;
}
else
{
crc_type
=
CRC24_B
;
crc_type
=
CRC24_B
;
length_dec
=
(
harq_process
->
B
+
24
*
harq_process
->
C
)
/
harq_process
->
C
;
}
if
(
err_flag
==
0
)
{
if
(
err_flag
==
0
)
{
/*
LOG_I(PHY, "turbo algo Kr=%d cb_cnt=%d C=%d nbRB=%d crc_type %d TBSInput=%d TBSHarq=%d TBSplus24=%d mcs=%d Qm=%d RIV=%d round=%d maxIter %d\n",
Kr,r,harq_process->C,harq_process->nb_rb,crc_type,A,harq_process->TBS,
harq_process->B,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round,dlsch->max_ldpc_iterations);
*/
#if UE_TIMING_TRACE
#if UE_TIMING_TRACE
start_meas
(
dlsch_turbo_decoding_stats
);
start_meas
(
dlsch_turbo_decoding_stats
);
#endif
#endif
//LOG_E(PHY,"AbsSubframe %d.%d Start
turbo
segment %d/%d A %d ",frame%1024,nr_tti_rx,r,harq_process->C-1, A);
//LOG_E(PHY,"AbsSubframe %d.%d Start
LDPC
segment %d/%d A %d ",frame%1024,nr_tti_rx,r,harq_process->C-1, A);
//printf("harq process dr iteration %d\n", p_decParams->numMaxIter);
//printf("harq process dr iteration %d\n", p_decParams->numMaxIter);
for
(
int
cnt
=
0
;
cnt
<
(
kc
-
2
)
*
p_decParams
->
Z
;
cnt
++
){
inv_d
[
cnt
]
=
(
1
)
*
harq_process
->
d
[
r
][
cnt
];
}
/*for (int cnt =0; cnt < 16; cnt++){
memset
(
pv
,
0
,
2
*
harq_process
->
Z
*
sizeof
(
int16_t
));
printf("dr %d inv_d %d \n", harq_process->d[r][cnt], inv_d[cnt]);
}
printf(" \n");
printf("end dr \n");
for (int cnt =(50*p_decParams->Z-16) ; cnt < 50*p_decParams->Z; cnt++){
printf("%d ", harq_process->d[r][cnt]);
}
printf(" \n");*/
memset
(
pv
,
0
,
2
*
harq_process
->
Z
*
sizeof
(
int16_t
));
//memset(pl,0,2*p_decParams->Z*sizeof(int8_t));
//memset(pl,0,2*p_decParams->Z*sizeof(int8_t));
memset
((
pv
+
K_bytes_F
),
127
,
harq_process
->
F
*
sizeof
(
int16_t
));
memset
((
pv
+
K_bytes_F
),
127
,
harq_process
->
F
*
sizeof
(
int16_t
));
for
(
i
=
((
2
*
p_decParams
->
Z
)
>>
3
),
j
=
0
;
i
<
K_bytes_F
+
((
2
*
p_decParams
->
Z
)
>>
3
)
;
i
++
,
j
++
)
for
(
i
=
((
2
*
p_decParams
->
Z
)
>>
3
),
j
=
0
;
i
<
K_bytes_F
;
i
++
,
j
++
)
{
{
pv
[
i
]
=
_mm_loadu_si128
((
__m128i
*
)(
&
inv_d
[
8
*
j
]));
pv
[
i
]
=
_mm_loadu_si128
((
__m128i
*
)(
&
harq_process
->
d
[
r
]
[
8
*
j
]));
}
}
for
(
i
=
Kr_bytes
+
((
2
*
p_decParams
->
Z
)
>>
3
),
j
=
Kr_bytes
;
i
<
((
kc
*
p_decParams
->
Z
)
>>
3
);
i
++
,
j
++
)
for
(
i
=
Kr_bytes
,
j
=
K_bytes_F
-
((
2
*
p_decParams
->
Z
)
>>
3
)
;
i
<
((
kc
*
p_decParams
->
Z
)
>>
3
);
i
++
,
j
++
)
{
{
pv
[
i
]
=
_mm_loadu_si128
((
__m128i
*
)(
&
inv_d
[
8
*
j
]));
pv
[
i
]
=
_mm_loadu_si128
((
__m128i
*
)(
&
harq_process
->
d
[
r
]
[
8
*
j
]));
}
}
for
(
i
=
0
,
j
=
0
;
j
<
((
kc
*
p_decParams
->
Z
)
>>
4
);
i
+=
2
,
j
++
)
for
(
i
=
0
,
j
=
0
;
j
<
((
kc
*
p_decParams
->
Z
)
>>
4
);
i
+=
2
,
j
++
)
...
@@ -517,8 +518,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -517,8 +518,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
p_procTime
);
p_procTime
);
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
harq_process
->
B
,
harq_process
->
F
,
crc_type
))
{
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
harq_process
->
F
,
crc_type
))
{
printf
(
"
CRC OK
\n
"
);
printf
(
"
Segment %d CRC OK
\n
"
,
r
);
ret
=
2
;
ret
=
2
;
}
}
else
{
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment