Merge remote-tracking branch 'origin/ci-aw2s-asue-test' into integration_2023_w16
This commit is contained in:
@@ -405,6 +405,26 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stage ("SA-AW2S-CN5G") {
|
||||||
|
when { expression {do5Gtest} }
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
triggerSlaveJob ('RAN-SA-AW2S-CN5G', 'SA-AW2S-CN5G')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
script {
|
||||||
|
finalizeSlaveJob('RAN-SA-AW2S-CN5G')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
failure {
|
||||||
|
script {
|
||||||
|
currentBuild.result = 'FAILURE'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//avra is offline, re-enable once it is available
|
//avra is offline, re-enable once it is available
|
||||||
//stage ("T1-Offload-Test") {
|
//stage ("T1-Offload-Test") {
|
||||||
|
|||||||
@@ -211,10 +211,16 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
dir ('ci-scripts') {
|
dir ('ci-scripts') {
|
||||||
// Zipping all archived log files
|
// Zipping all archived log files
|
||||||
sh "zip -r -qq physim_deploytest_logs_${env.BUILD_ID}.zip physim_test_logs_*/*"
|
sh "mkdir test_logs"
|
||||||
sh "rm -rf physim_test_logs_*/"
|
sh "mv *.log* test_logs || true"
|
||||||
if (fileExists("physim_deploytest_logs_${env.BUILD_ID}.zip")) {
|
sh "zip -r -qq test_logs_${env.BUILD_ID}.zip *test_log*/"
|
||||||
archiveArtifacts artifacts: "physim_deploytest_logs_${env.BUILD_ID}.zip"
|
sh "rm -rf *test_log*/"
|
||||||
|
if (fileExists("test_logs_${env.BUILD_ID}.zip")) {
|
||||||
|
archiveArtifacts artifacts: "test_logs_${env.BUILD_ID}.zip"
|
||||||
|
}
|
||||||
|
if (fileExists("test_logs_CN.zip")){
|
||||||
|
sh "mv test_logs_CN.zip test_logs_CN_${env.BUILD_ID}.zip"
|
||||||
|
archiveArtifacts artifacts: "test_logs_CN_${env.BUILD_ID}.zip"
|
||||||
}
|
}
|
||||||
if (fileExists("test_results.html")) {
|
if (fileExists("test_results.html")) {
|
||||||
sh "mv test_results.html test_results-${env.JOB_NAME}.html"
|
sh "mv test_results.html test_results-${env.JOB_NAME}.html"
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUST
|
|||||||
SCA.eNBSourceCodePath=matchReg.group(1)
|
SCA.eNBSourceCodePath=matchReg.group(1)
|
||||||
PHYSIM.eNBSourceCodePath=matchReg.group(1)
|
PHYSIM.eNBSourceCodePath=matchReg.group(1)
|
||||||
CLUSTER.eNBSourceCodePath=matchReg.group(1)
|
CLUSTER.eNBSourceCodePath=matchReg.group(1)
|
||||||
|
EPC.eNBSourceCodePath=matchReg.group(1)
|
||||||
elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE):
|
elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE):
|
||||||
matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE)
|
||||||
RAN.eNB1SourceCodePath=matchReg.group(1)
|
RAN.eNB1SourceCodePath=matchReg.group(1)
|
||||||
@@ -219,10 +220,10 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUST
|
|||||||
EPC.SourceCodePath=matchReg.group(1)
|
EPC.SourceCodePath=matchReg.group(1)
|
||||||
elif re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE):
|
elif re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE):
|
||||||
matchReg = re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE)
|
||||||
if re.match('OAI', matchReg.group(1), re.IGNORECASE) or re.match('ltebox', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-CUPS', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-Docker', matchReg.group(1), re.IGNORECASE):
|
if re.match('OAI', matchReg.group(1), re.IGNORECASE) or re.match('ltebox', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-CUPS', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-Docker', matchReg.group(1), re.IGNORECASE) or re.match('OC-OAI-CN5G', matchReg.group(1), re.IGNORECASE):
|
||||||
EPC.Type=matchReg.group(1)
|
EPC.Type=matchReg.group(1)
|
||||||
else:
|
else:
|
||||||
sys.exit('Invalid EPC Type: ' + matchReg.group(1) + ' -- (should be OAI or ltebox or OAI-Rel14-CUPS or OAI-Rel14-Docker)')
|
sys.exit('Invalid EPC Type: ' + matchReg.group(1) + ' -- (should be OAI or ltebox or OAI-Rel14-CUPS or OAI-Rel14-Docker or OC-OAI-CN5G)')
|
||||||
elif re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE):
|
elif re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE):
|
||||||
matchReg = re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE)
|
||||||
EPC.ContainerPrefix=matchReg.group(1)
|
EPC.ContainerPrefix=matchReg.group(1)
|
||||||
@@ -260,14 +261,17 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUST
|
|||||||
matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE)
|
||||||
PHYSIM.OCUserName = matchReg.group(1)
|
PHYSIM.OCUserName = matchReg.group(1)
|
||||||
CLUSTER.OCUserName = matchReg.group(1)
|
CLUSTER.OCUserName = matchReg.group(1)
|
||||||
|
EPC.OCUserName = matchReg.group(1)
|
||||||
elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE):
|
elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE):
|
||||||
matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE)
|
||||||
PHYSIM.OCPassword = matchReg.group(1)
|
PHYSIM.OCPassword = matchReg.group(1)
|
||||||
CLUSTER.OCPassword = matchReg.group(1)
|
CLUSTER.OCPassword = matchReg.group(1)
|
||||||
|
EPC.OCPassword = matchReg.group(1)
|
||||||
elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE):
|
elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE):
|
||||||
matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE)
|
||||||
PHYSIM.OCProjectName = matchReg.group(1)
|
PHYSIM.OCProjectName = matchReg.group(1)
|
||||||
CLUSTER.OCProjectName = matchReg.group(1)
|
CLUSTER.OCProjectName = matchReg.group(1)
|
||||||
|
EPC.OCProjectName = matchReg.group(1)
|
||||||
elif re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE):
|
elif re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE):
|
||||||
matchReg = re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE)
|
matchReg = re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE)
|
||||||
CLUSTER.OCUrl = matchReg.group(1)
|
CLUSTER.OCUrl = matchReg.group(1)
|
||||||
|
|||||||
@@ -0,0 +1,183 @@
|
|||||||
|
/* UE simulator configuration file version 2021-06-17
|
||||||
|
* LTE / 5G Non StandAlone
|
||||||
|
* Copyright (C) 2019-2021 Amarisoft
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
#define N_ANTENNA_DL 1
|
||||||
|
#define TDD 1
|
||||||
|
|
||||||
|
log_options: "all.level=warn,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||||
|
log_filename: "/tmp/ue1.log",
|
||||||
|
|
||||||
|
/* Enable remote API and Web interface */
|
||||||
|
com_addr: "0.0.0.0:9002",
|
||||||
|
|
||||||
|
include "rf_driver/1chan.cfg",
|
||||||
|
|
||||||
|
/* If true, allow the simulation of several UEs at the same time and
|
||||||
|
allow dynamic UE creation from remote API */
|
||||||
|
|
||||||
|
cell_groups: [{
|
||||||
|
group_type: "nr",
|
||||||
|
multi_ue: true,
|
||||||
|
cells: [{
|
||||||
|
rf_port: 0,
|
||||||
|
bandwidth: 20,
|
||||||
|
#if TDD == 1
|
||||||
|
band: 78,
|
||||||
|
dl_nr_arfcn:627360,
|
||||||
|
ssb_nr_arfcn:627360,
|
||||||
|
#else
|
||||||
|
band: 7,
|
||||||
|
dl_nr_arfcn: 536020,
|
||||||
|
ssb_nr_arfcn: 535930,
|
||||||
|
ssb_subcarrier_spacing: 15,
|
||||||
|
#endif
|
||||||
|
subcarrier_spacing: 30,
|
||||||
|
n_antenna_dl: N_ANTENNA_DL,
|
||||||
|
n_antenna_ul: 1,
|
||||||
|
rx_to_tx_latency:2,
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
|
||||||
|
ue_list: [
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 1,
|
||||||
|
"imsi": "001010000000100",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, },
|
||||||
|
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 2,
|
||||||
|
"imsi": "001010000000101",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, },
|
||||||
|
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 3,
|
||||||
|
"imsi": "001010000000102",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||||
|
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 4,
|
||||||
|
"imsi": "001010000000103",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||||
|
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 5,
|
||||||
|
"imsi": "001010000000104",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||||
|
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 6,
|
||||||
|
"imsi": "001010000000105",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||||
|
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* UE capabilities */
|
||||||
|
|
||||||
|
/* USIM data */
|
||||||
|
"ue_id" : 7,
|
||||||
|
"imsi": "001010000000106",
|
||||||
|
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||||
|
"sim_algo":"milenage",
|
||||||
|
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||||
|
|
||||||
|
as_release: 15,
|
||||||
|
ue_category: "nr",
|
||||||
|
apn:"oai",
|
||||||
|
attach_pdn_type:"ipv4",
|
||||||
|
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||||
|
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||||
|
|
||||||
|
|
||||||
|
/* Enable it to allow sim_events to be handled remotely */
|
||||||
|
//rue_addr: "127.1.0.0",
|
||||||
|
/* Enable it to create a TUN interface for each UE PDN */
|
||||||
|
tun_setup_script: "ue-ifup",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
/* UE simulator configuration */
|
|
||||||
|
|
||||||
|
|
||||||
/* UE simulator configuration file version 2021-06-17
|
|
||||||
* LTE / 5G Non StandAlone
|
|
||||||
* Copyright (C) 2019-2021 Amarisoft
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#define N_ANTENNA_DL 1
|
|
||||||
#define TDD 1
|
|
||||||
#define CELL_BANDWIDTH 40
|
|
||||||
#define UE_COUNT 3 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
|
||||||
|
|
||||||
|
|
||||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
|
||||||
log_filename: "/tmp/ue0.log",
|
|
||||||
|
|
||||||
/* Enable remote API and Web interface */
|
|
||||||
com_addr: "0.0.0.0:9002",
|
|
||||||
|
|
||||||
include "rf_driver/1chan.cfg",
|
|
||||||
|
|
||||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
|
||||||
|
|
||||||
cell_groups: [{
|
|
||||||
group_type: "nr",
|
|
||||||
multi_ue: true,
|
|
||||||
cells: [{
|
|
||||||
rf_port: 0,
|
|
||||||
bandwidth: CELL_BANDWIDTH,
|
|
||||||
#if TDD == 1
|
|
||||||
band: 78,
|
|
||||||
dl_nr_arfcn:621312,
|
|
||||||
ssb_nr_arfcn:621312,
|
|
||||||
|
|
||||||
//band: 41,
|
|
||||||
//dl_nr_arfcn:517020,
|
|
||||||
//ssb_nr_arfcn:516990,
|
|
||||||
#else
|
|
||||||
band: 7,
|
|
||||||
dl_nr_arfcn: 536020,
|
|
||||||
ssb_nr_arfcn: 535930,
|
|
||||||
ssb_subcarrier_spacing: 15,
|
|
||||||
#endif
|
|
||||||
subcarrier_spacing: 30,
|
|
||||||
n_antenna_dl: N_ANTENNA_DL,
|
|
||||||
n_antenna_ul: 1,
|
|
||||||
rx_to_tx_latency:2,
|
|
||||||
}],
|
|
||||||
}],
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_bind_addr: "127.0.10.11",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ue_list: [
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 0,
|
|
||||||
"imsi": "208970100001127",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
}, /*end UE object 0*/
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 1,
|
|
||||||
"imsi": "208970100001128",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
}, /*end UE object 1*/
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 2,
|
|
||||||
"imsi": "208970100001129",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
} /*end UE object 2*/
|
|
||||||
],/*end UE list*/
|
|
||||||
}/*end json*/
|
|
||||||
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
/* UE simulator configuration */
|
|
||||||
|
|
||||||
|
|
||||||
/* UE simulator configuration file version 2021-06-17
|
|
||||||
* LTE / 5G Non StandAlone
|
|
||||||
* Copyright (C) 2019-2021 Amarisoft
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#define N_ANTENNA_DL 1
|
|
||||||
#define TDD 1
|
|
||||||
#define CELL_BANDWIDTH 40
|
|
||||||
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
|
||||||
|
|
||||||
|
|
||||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
|
||||||
log_filename: "/tmp/ue0.log",
|
|
||||||
|
|
||||||
/* Enable remote API and Web interface */
|
|
||||||
com_addr: "0.0.0.0:9002",
|
|
||||||
|
|
||||||
include "rf_driver/1chan.cfg",
|
|
||||||
|
|
||||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
|
||||||
|
|
||||||
cell_groups: [{
|
|
||||||
group_type: "nr",
|
|
||||||
multi_ue: true,
|
|
||||||
cells: [{
|
|
||||||
rf_port: 0,
|
|
||||||
bandwidth: CELL_BANDWIDTH,
|
|
||||||
#if TDD == 1
|
|
||||||
band: 78,
|
|
||||||
dl_nr_arfcn:621312,
|
|
||||||
ssb_nr_arfcn:621312,
|
|
||||||
|
|
||||||
//band: 41,
|
|
||||||
//dl_nr_arfcn:517020,
|
|
||||||
//ssb_nr_arfcn:516990,
|
|
||||||
#else
|
|
||||||
band: 7,
|
|
||||||
dl_nr_arfcn: 536020,
|
|
||||||
ssb_nr_arfcn: 535930,
|
|
||||||
ssb_subcarrier_spacing: 15,
|
|
||||||
#endif
|
|
||||||
subcarrier_spacing: 30,
|
|
||||||
n_antenna_dl: N_ANTENNA_DL,
|
|
||||||
n_antenna_ul: 1,
|
|
||||||
rx_to_tx_latency:2,
|
|
||||||
}],
|
|
||||||
}],
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_bind_addr: "127.0.10.11",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ue_list: [
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 1,
|
|
||||||
"imsi": "208970100001127",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
}, /*end UE object 0*/
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 2,
|
|
||||||
"imsi": "208970100001128",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tag": "ping",
|
|
||||||
"prog":"oai_ext_app.sh",
|
|
||||||
start_time: 15,
|
|
||||||
end_time: 25,
|
|
||||||
"args":["ping 192.168.70.136"],
|
|
||||||
"event":"ext_app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
} /*end UE object 1*/
|
|
||||||
],/*end UE list*/
|
|
||||||
}/*end json*/
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
/* UE simulator configuration */
|
|
||||||
|
|
||||||
|
|
||||||
/* UE simulator configuration file version 2021-06-17
|
|
||||||
* LTE / 5G Non StandAlone
|
|
||||||
* Copyright (C) 2019-2021 Amarisoft
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#define N_ANTENNA_DL 1
|
|
||||||
#define TDD 1
|
|
||||||
#define CELL_BANDWIDTH 40
|
|
||||||
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
|
||||||
|
|
||||||
|
|
||||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
|
||||||
log_filename: "/tmp/ue0.log",
|
|
||||||
|
|
||||||
/* Enable remote API and Web interface */
|
|
||||||
com_addr: "0.0.0.0:9002",
|
|
||||||
|
|
||||||
include "rf_driver/1chan.cfg",
|
|
||||||
|
|
||||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
|
||||||
|
|
||||||
cell_groups: [{
|
|
||||||
group_type: "nr",
|
|
||||||
multi_ue: true,
|
|
||||||
cells: [{
|
|
||||||
rf_port: 0,
|
|
||||||
bandwidth: CELL_BANDWIDTH,
|
|
||||||
#if TDD == 1
|
|
||||||
band: 78,
|
|
||||||
dl_nr_arfcn:621312,
|
|
||||||
ssb_nr_arfcn:621312,
|
|
||||||
|
|
||||||
//band: 41,
|
|
||||||
//dl_nr_arfcn:517020,
|
|
||||||
//ssb_nr_arfcn:516990,
|
|
||||||
#else
|
|
||||||
band: 7,
|
|
||||||
dl_nr_arfcn: 536020,
|
|
||||||
ssb_nr_arfcn: 535930,
|
|
||||||
ssb_subcarrier_spacing: 15,
|
|
||||||
#endif
|
|
||||||
subcarrier_spacing: 30,
|
|
||||||
n_antenna_dl: N_ANTENNA_DL,
|
|
||||||
n_antenna_ul: 1,
|
|
||||||
rx_to_tx_latency:2,
|
|
||||||
}],
|
|
||||||
}],
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_bind_addr: "127.0.10.11",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ue_list: [
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 1,
|
|
||||||
"imsi": "208970100001127",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tag": "ping",
|
|
||||||
"prog":"oai_ext_app.sh",
|
|
||||||
start_time: 15,
|
|
||||||
end_time: 25,
|
|
||||||
"args":["ping 192.168.70.136"],
|
|
||||||
"event":"ext_app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
}, /*end UE object 0*/
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 2,
|
|
||||||
"imsi": "208970100001128",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tag": "ping",
|
|
||||||
"prog":"oai_ext_app.sh",
|
|
||||||
start_time: 15,
|
|
||||||
end_time: 25,
|
|
||||||
"args":["ping 192.168.70.136"],
|
|
||||||
"event":"ext_app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
} /*end UE object 1*/
|
|
||||||
],/*end UE list*/
|
|
||||||
}/*end json*/
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
/* UE simulator configuration */
|
|
||||||
|
|
||||||
|
|
||||||
/* UE simulator configuration file version 2021-06-17
|
|
||||||
* LTE / 5G Non StandAlone
|
|
||||||
* Copyright (C) 2019-2021 Amarisoft
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#define N_ANTENNA_DL 1
|
|
||||||
#define TDD 1
|
|
||||||
#define CELL_BANDWIDTH 40
|
|
||||||
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
|
||||||
|
|
||||||
|
|
||||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
|
||||||
log_filename: "/tmp/ue0.log",
|
|
||||||
|
|
||||||
/* Enable remote API and Web interface */
|
|
||||||
com_addr: "0.0.0.0:9002",
|
|
||||||
|
|
||||||
include "rf_driver/1chan.cfg",
|
|
||||||
|
|
||||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
|
||||||
|
|
||||||
cell_groups: [{
|
|
||||||
group_type: "nr",
|
|
||||||
multi_ue: true,
|
|
||||||
cells: [{
|
|
||||||
rf_port: 0,
|
|
||||||
bandwidth: CELL_BANDWIDTH,
|
|
||||||
#if TDD == 1
|
|
||||||
band: 78,
|
|
||||||
dl_nr_arfcn:621312,
|
|
||||||
ssb_nr_arfcn:621312,
|
|
||||||
|
|
||||||
//band: 41,
|
|
||||||
//dl_nr_arfcn:517020,
|
|
||||||
//ssb_nr_arfcn:516990,
|
|
||||||
#else
|
|
||||||
band: 7,
|
|
||||||
dl_nr_arfcn: 536020,
|
|
||||||
ssb_nr_arfcn: 535930,
|
|
||||||
ssb_subcarrier_spacing: 15,
|
|
||||||
#endif
|
|
||||||
subcarrier_spacing: 30,
|
|
||||||
n_antenna_dl: N_ANTENNA_DL,
|
|
||||||
n_antenna_ul: 1,
|
|
||||||
rx_to_tx_latency:2,
|
|
||||||
}],
|
|
||||||
}],
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_bind_addr: "127.0.10.11",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ue_list: [
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 1,
|
|
||||||
"imsi": "208970100001127",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tag": "ping",
|
|
||||||
"prog":"oai_ext_app.sh",
|
|
||||||
start_time: 20,
|
|
||||||
end_time: 30,
|
|
||||||
"args":["ping 192.168.70.136"],
|
|
||||||
"event":"ext_app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 60,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
}, /*end UE object 0*/
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
/* USIM data */
|
|
||||||
"ue_id" : 2,
|
|
||||||
"imsi": "208970100001128",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
sim_events: [
|
|
||||||
{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tag": "ping",
|
|
||||||
"prog":"oai_ext_app.sh",
|
|
||||||
start_time: 40,
|
|
||||||
end_time: 50,
|
|
||||||
"args":["ping 192.168.70.136"],
|
|
||||||
"event":"ext_app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 60,
|
|
||||||
}
|
|
||||||
] /*end sim events */
|
|
||||||
} /*end UE object 1*/
|
|
||||||
],/*end UE list*/
|
|
||||||
}/*end json*/
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
/* UE simulator configuration */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* UE simulator configuration file version 2021-06-17
|
|
||||||
* LTE / 5G Non StandAlone
|
|
||||||
* Copyright (C) 2019-2021 Amarisoft
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#define N_ANTENNA_DL 1
|
|
||||||
#define TDD 1
|
|
||||||
#define CELL_BANDWIDTH 40
|
|
||||||
|
|
||||||
|
|
||||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
|
||||||
log_filename: "/tmp/ue1.log",
|
|
||||||
|
|
||||||
/* Enable remote API and Web interface */
|
|
||||||
com_addr: "0.0.0.0:9002",
|
|
||||||
|
|
||||||
include "rf_driver/1chan.cfg",
|
|
||||||
|
|
||||||
/* If true, allow the simulation of several UEs at the same time and
|
|
||||||
allow dynamic UE creation from remote API */
|
|
||||||
|
|
||||||
cell_groups: [{
|
|
||||||
group_type: "nr",
|
|
||||||
multi_ue: false,
|
|
||||||
cells: [{
|
|
||||||
rf_port: 0,
|
|
||||||
bandwidth: CELL_BANDWIDTH,
|
|
||||||
#if TDD == 1
|
|
||||||
band: 78,
|
|
||||||
dl_nr_arfcn:621312,
|
|
||||||
ssb_nr_arfcn:621312,
|
|
||||||
|
|
||||||
//band: 41,
|
|
||||||
//dl_nr_arfcn:517020,
|
|
||||||
//ssb_nr_arfcn:516990,
|
|
||||||
#else
|
|
||||||
band: 7,
|
|
||||||
dl_nr_arfcn: 536020,
|
|
||||||
ssb_nr_arfcn: 535930,
|
|
||||||
ssb_subcarrier_spacing: 15,
|
|
||||||
#endif
|
|
||||||
subcarrier_spacing: 30,
|
|
||||||
n_antenna_dl: N_ANTENNA_DL,
|
|
||||||
n_antenna_ul: 1,
|
|
||||||
rx_to_tx_latency:2,
|
|
||||||
}],
|
|
||||||
}],
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_bind_addr: "127.0.10.11",
|
|
||||||
|
|
||||||
ue_list: [
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
|
|
||||||
/* USIM data */
|
|
||||||
|
|
||||||
|
|
||||||
"imsi": "208970100001127",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
|
|
||||||
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 66051,
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
|
|
||||||
sim_events: [{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
}, {
|
|
||||||
"tag": "ping",
|
|
||||||
"prog":"oai_ext_app.sh",
|
|
||||||
start_time: 15,
|
|
||||||
end_time: 25,
|
|
||||||
"args":["ping 192.168.70.136"],
|
|
||||||
"event":"ext_app"
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
/* UE simulator configuration */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* UE simulator configuration file version 2021-06-17
|
|
||||||
* LTE / 5G Non StandAlone
|
|
||||||
* Copyright (C) 2019-2021 Amarisoft
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#define N_ANTENNA_DL 1
|
|
||||||
#define TDD 1
|
|
||||||
#define CELL_BANDWIDTH 20
|
|
||||||
|
|
||||||
|
|
||||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
|
||||||
log_filename: "/tmp/ue0.log",
|
|
||||||
|
|
||||||
/* Enable remote API and Web interface */
|
|
||||||
com_addr: "0.0.0.0:9002",
|
|
||||||
|
|
||||||
include "rf_driver/1chan.cfg",
|
|
||||||
|
|
||||||
/* If true, allow the simulation of several UEs at the same time and
|
|
||||||
allow dynamic UE creation from remote API */
|
|
||||||
|
|
||||||
cell_groups: [{
|
|
||||||
group_type: "nr",
|
|
||||||
multi_ue: false,
|
|
||||||
cells: [{
|
|
||||||
rf_port: 0,
|
|
||||||
bandwidth: CELL_BANDWIDTH,
|
|
||||||
#if TDD == 1
|
|
||||||
// band: 78,
|
|
||||||
// dl_nr_arfcn:621312,
|
|
||||||
// ssb_nr_arfcn:621312,*/
|
|
||||||
|
|
||||||
band: 41,
|
|
||||||
dl_nr_arfcn:517020,
|
|
||||||
ssb_nr_arfcn:516990,
|
|
||||||
#else
|
|
||||||
band: 7,
|
|
||||||
dl_nr_arfcn: 536020,
|
|
||||||
ssb_nr_arfcn: 535930,
|
|
||||||
ssb_subcarrier_spacing: 15,
|
|
||||||
#endif
|
|
||||||
subcarrier_spacing: 30,
|
|
||||||
n_antenna_dl: N_ANTENNA_DL,
|
|
||||||
n_antenna_ul: 1,
|
|
||||||
rx_to_tx_latency:2,
|
|
||||||
}],
|
|
||||||
}],
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_bind_addr: "127.0.10.11",
|
|
||||||
|
|
||||||
ue_list: [
|
|
||||||
{
|
|
||||||
/* UE capabilities */
|
|
||||||
|
|
||||||
/* USIM data */
|
|
||||||
|
|
||||||
"imsi": "208970100001127",
|
|
||||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
|
||||||
"sim_algo":"milenage",
|
|
||||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
|
||||||
|
|
||||||
|
|
||||||
as_release: 15,
|
|
||||||
ue_category: "nr",
|
|
||||||
apn:"oai",
|
|
||||||
attach_pdn_type:"ipv4",
|
|
||||||
default_nssai: [
|
|
||||||
{
|
|
||||||
sst: 1,
|
|
||||||
sd: 1,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
|
|
||||||
default_pdu_session_snssai: {
|
|
||||||
sst: 1,
|
|
||||||
sd: 1,
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable it to allow sim_events to be handled remotely */
|
|
||||||
//rue_addr: "127.1.0.0",
|
|
||||||
|
|
||||||
/* Enable it to create a TUN interface for each UE PDN */
|
|
||||||
tun_setup_script: "ue-ifup",
|
|
||||||
|
|
||||||
sim_events: [{
|
|
||||||
event: "power_on",
|
|
||||||
start_time: 5,
|
|
||||||
}, {
|
|
||||||
event: "ext_app",
|
|
||||||
start_time: 15,
|
|
||||||
end_time: 25,
|
|
||||||
prog: "ext_app.sh",
|
|
||||||
args: ["iperf", " -c 172.21.10.5", " -u"," -b 1M"," -i 1"," -t 10"]
|
|
||||||
}, {
|
|
||||||
event: "power_off",
|
|
||||||
start_time: 30,
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
+22
-22
@@ -49,75 +49,75 @@ adb_ue_2:
|
|||||||
|
|
||||||
amarisoft_ue:
|
amarisoft_ue:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
InitScript: nohup /root/NV18-06-2022/ue/lteue /root/NV18-06-2022/ue/config/oaicicd-ue-ci-test.cfg &
|
InitScript: /root/NV18-06-2022/lteue-linux-2023-03-17/lteue /root/oaicicd/ran_sa_aw2s_asue/aw2s-asue.cfg &
|
||||||
TermScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"quit"}'
|
TermScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"quit"}'
|
||||||
amarisoft_ue_1:
|
amarisoft_ue_1:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":1}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":1}'
|
||||||
UENetworkScript: ip netns exec ue1 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue1 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue1
|
CmdPrefix: ip netns exec ue1
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_2:
|
amarisoft_ue_2:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":2}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":2}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":2}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":2}'
|
||||||
UENetworkScript: ip netns exec ue2 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue2 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue2
|
CmdPrefix: ip netns exec ue2
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_3:
|
amarisoft_ue_3:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":3}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":3}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":3}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":3}'
|
||||||
UENetworkScript: ip netns exec ue3 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue3 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue3
|
CmdPrefix: ip netns exec ue3
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_4:
|
amarisoft_ue_4:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":4}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":4}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":4}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":4}'
|
||||||
UENetworkScript: ip netns exec ue4 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue4 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue4
|
CmdPrefix: ip netns exec ue4
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_5:
|
amarisoft_ue_5:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":5}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":5}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":5}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":5}'
|
||||||
UENetworkScript: ip netns exec ue5 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue5 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue5
|
CmdPrefix: ip netns exec ue5
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_6:
|
amarisoft_ue_6:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":6}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":6}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":6}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":6}'
|
||||||
UENetworkScript: ip netns exec ue6 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue6 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue6
|
CmdPrefix: ip netns exec ue6
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_7:
|
amarisoft_ue_7:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":7}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":7}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":7}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":7}'
|
||||||
UENetworkScript: ip netns exec ue7 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue7 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue7
|
CmdPrefix: ip netns exec ue7
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_8:
|
amarisoft_ue_8:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":8}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":8}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":8}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":8}'
|
||||||
UENetworkScript: ip netns exec ue8 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue8 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue8
|
CmdPrefix: ip netns exec ue8
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_9:
|
amarisoft_ue_9:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":9}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":9}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":9}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":9}'
|
||||||
UENetworkScript: ip netns exec ue9 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue9 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue9
|
CmdPrefix: ip netns exec ue9
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
amarisoft_ue_10:
|
amarisoft_ue_10:
|
||||||
Host: amariue
|
Host: amariue
|
||||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":10}'
|
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":10}'
|
||||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":10}'
|
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":10}'
|
||||||
UENetworkScript: ip netns exec ue10 ip a show dev pdn0
|
UENetworkScript: ip netns exec ue10 ip a show dev pdn0
|
||||||
CmdPrefix: ip netns exec ue10
|
CmdPrefix: ip netns exec ue10
|
||||||
MTU: 1500
|
MTU: 1500
|
||||||
|
|||||||
@@ -40,6 +40,29 @@ import cls_cmd
|
|||||||
|
|
||||||
IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc"
|
IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc"
|
||||||
NAMESPACE = "oaicicd-ran"
|
NAMESPACE = "oaicicd-ran"
|
||||||
|
OCUrl = "https://api.oai.cs.eurecom.fr:6443"
|
||||||
|
OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
|
||||||
|
|
||||||
|
|
||||||
|
def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
|
||||||
|
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
|
||||||
|
HELP.GenericHelp(CONST.Version)
|
||||||
|
sys.exit('Insufficient Parameter: no OC Credentials')
|
||||||
|
if OCRegistry.startswith("http") and not self.OCRegistry.endswith("/"):
|
||||||
|
sys.exit(f'ocRegistry {OCRegistry} should not start with http:// or https:// and end on a slash /')
|
||||||
|
ret = cmd.run(f'oc login -u {ocUserName} -p {ocPassword} --server {OCUrl}')
|
||||||
|
if ret.returncode != 0:
|
||||||
|
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||||
|
return False
|
||||||
|
ret = cmd.run(f'oc project {ocProjectName}')
|
||||||
|
if ret.returncode != 0:
|
||||||
|
logging.error(f'\u001B[1mUnable to access OC project {ocProjectName}\u001B[0m')
|
||||||
|
OC_logout(cmd)
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def OC_logout(cmd):
|
||||||
|
cmd.run(f'oc logout')
|
||||||
|
|
||||||
class Cluster:
|
class Cluster:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -57,7 +80,7 @@ class Cluster:
|
|||||||
self.ranAllowMerge = False
|
self.ranAllowMerge = False
|
||||||
self.ranTargetBranch = ""
|
self.ranTargetBranch = ""
|
||||||
self.cmd = None
|
self.cmd = None
|
||||||
|
self.imageToPull = ''
|
||||||
|
|
||||||
def _recreate_entitlements(self):
|
def _recreate_entitlements(self):
|
||||||
# recreating entitlements, don't care if deletion fails
|
# recreating entitlements, don't care if deletion fails
|
||||||
@@ -170,11 +193,47 @@ class Cluster:
|
|||||||
def _undeploy_pod(self, filename):
|
def _undeploy_pod(self, filename):
|
||||||
self.cmd.run(f'oc delete -f {filename}')
|
self.cmd.run(f'oc delete -f {filename}')
|
||||||
|
|
||||||
|
def PullClusterImage(self, HTML, RAN):
|
||||||
|
if self.imageToPull == '':
|
||||||
|
HELP.GenericHelp(CONST.Version)
|
||||||
|
HELP.EPCSrvHelp(self.imageToPull)
|
||||||
|
sys.exit('Insufficient eNB Parameters')
|
||||||
|
lIpAddr = self.eNBIPAddress
|
||||||
|
self.testCase_id = HTML.testCase_id
|
||||||
|
cmd = cls_cmd.getConnection(lIpAddr)
|
||||||
|
succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, self.OCProjectName)
|
||||||
|
if not succeeded:
|
||||||
|
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||||
|
return False
|
||||||
|
ret = cmd.run(f'oc whoami -t | docker login -u oaicicd --password-stdin {self.OCRegistry}')
|
||||||
|
if ret.returncode != 0:
|
||||||
|
logging.error(f'\u001B[1m Unable to access OC project {ocProjectName}\u001B[0m')
|
||||||
|
OC_logout(cmd)
|
||||||
|
cmd.close()
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||||
|
return False
|
||||||
|
for image in self.imageToPull:
|
||||||
|
imagePrefix = f'{self.OCRegistry}{self.OCProjectName}'
|
||||||
|
imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
|
ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}')
|
||||||
|
if ret.returncode != 0:
|
||||||
|
logging.error(f'Could not pull {image} from local registry : {self.OCRegistry}')
|
||||||
|
OC_logout(cmd)
|
||||||
|
cmd.close()
|
||||||
|
HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
|
return False
|
||||||
|
cmd.run(f'docker tag {imagePrefix}/{imageTag} oai-ci/{imageTag}')
|
||||||
|
cmd.run(f'docker rmi {imagePrefix}/{imageTag}')
|
||||||
|
OC_logout(cmd)
|
||||||
|
cmd.close()
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
return True
|
||||||
|
|
||||||
def BuildClusterImage(self, HTML):
|
def BuildClusterImage(self, HTML):
|
||||||
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
|
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
|
||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
sys.exit(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {ranBranch} ranCommitID {self.ranCommitID}')
|
sys.exit(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {ranBranch} ranCommitID {self.ranCommitID}')
|
||||||
|
|
||||||
lIpAddr = self.eNBIPAddress
|
lIpAddr = self.eNBIPAddress
|
||||||
lSourcePath = self.eNBSourceCodePath
|
lSourcePath = self.eNBSourceCodePath
|
||||||
if lIpAddr == '' or lSourcePath == '':
|
if lIpAddr == '' or lSourcePath == '':
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
# Import
|
# Import
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
import sys # arg
|
import sys # arg
|
||||||
import re # reg
|
import re # reg
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
@@ -47,6 +47,7 @@ from zipfile import ZipFile
|
|||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
# OAI Testing modules
|
# OAI Testing modules
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
|
import cls_cluster as OC
|
||||||
import cls_cmd
|
import cls_cmd
|
||||||
import sshconnection as SSH
|
import sshconnection as SSH
|
||||||
import helpreadme as HELP
|
import helpreadme as HELP
|
||||||
@@ -90,6 +91,15 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
|
|||||||
logging.debug(f'Merging with the target branch: {ranTargetBranch}')
|
logging.debug(f'Merging with the target branch: {ranTargetBranch}')
|
||||||
sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 30)
|
sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 30)
|
||||||
|
|
||||||
|
def ImageTagToUse(imageName, ranCommitID, ranBranch, ranAllowMerge):
|
||||||
|
shortCommit = ranCommitID[0:8]
|
||||||
|
if ranAllowMerge:
|
||||||
|
tagToUse = f'{ranBranch}-{shortCommit}'
|
||||||
|
else:
|
||||||
|
tagToUse = f'develop-{shortCommit}'
|
||||||
|
fullTag = f'{imageName}:{tagToUse}'
|
||||||
|
return fullTag
|
||||||
|
|
||||||
def CopyLogsToExecutor(cmd, sourcePath, log_name):
|
def CopyLogsToExecutor(cmd, sourcePath, log_name):
|
||||||
cmd.cd(f'{sourcePath}/cmake_targets')
|
cmd.cd(f'{sourcePath}/cmake_targets')
|
||||||
cmd.run(f'rm -f {log_name}.zip')
|
cmd.run(f'rm -f {log_name}.zip')
|
||||||
@@ -306,7 +316,6 @@ class Containerize():
|
|||||||
self.registrySvrId = ''
|
self.registrySvrId = ''
|
||||||
self.testSvrId = ''
|
self.testSvrId = ''
|
||||||
self.imageToPull = []
|
self.imageToPull = []
|
||||||
|
|
||||||
#checkers from xml
|
#checkers from xml
|
||||||
self.ran_checkers={}
|
self.ran_checkers={}
|
||||||
|
|
||||||
@@ -383,7 +392,7 @@ class Containerize():
|
|||||||
|
|
||||||
CreateWorkspace(cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
CreateWorkspace(cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||||
|
|
||||||
# if asterix, copy the entitlement and subscription manager configurations
|
# if asterix, copy the entitlement and subscription manager configurations
|
||||||
if self.host == 'Red Hat':
|
if self.host == 'Red Hat':
|
||||||
cmd.run('mkdir -p ./etc-pki-entitlement ./rhsm-conf ./rhsm-ca')
|
cmd.run('mkdir -p ./etc-pki-entitlement ./rhsm-conf ./rhsm-ca')
|
||||||
cmd.run('cp /etc/rhsm/rhsm.conf ./rhsm-conf/')
|
cmd.run('cp /etc/rhsm/rhsm.conf ./rhsm-conf/')
|
||||||
@@ -649,15 +658,6 @@ class Containerize():
|
|||||||
HTML.CreateHtmlTestRow('commit ' + tag, 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('commit ' + tag, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
|
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
|
||||||
|
|
||||||
def ImageTagToUse(self, imageName):
|
|
||||||
shortCommit = self.ranCommitID[0:8]
|
|
||||||
if self.ranAllowMerge:
|
|
||||||
tagToUse = f'{self.ranBranch}-{shortCommit}'
|
|
||||||
else:
|
|
||||||
tagToUse = f'develop-{shortCommit}'
|
|
||||||
fullTag = f'porcepix.sboai.cs.eurecom.fr/{imageName}:{tagToUse}'
|
|
||||||
return fullTag
|
|
||||||
|
|
||||||
def Push_Image_to_Local_Registry(self, HTML):
|
def Push_Image_to_Local_Registry(self, HTML):
|
||||||
if self.registrySvrId == '0':
|
if self.registrySvrId == '0':
|
||||||
lIpAddr = self.eNBIPAddress
|
lIpAddr = self.eNBIPAddress
|
||||||
@@ -680,8 +680,8 @@ class Containerize():
|
|||||||
logging.debug('Pushing images from server: ' + lIpAddr)
|
logging.debug('Pushing images from server: ' + lIpAddr)
|
||||||
mySSH = SSH.SSHConnection()
|
mySSH = SSH.SSHConnection()
|
||||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||||
|
imagePrefix = 'porcepix.sboai.cs.eurecom.fr'
|
||||||
mySSH.command('docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr', '\$', 5)
|
mySSH.command(f'docker login -u oaicicd -p oaicicd {imagePrefix}', '\$', 5)
|
||||||
if re.search('Login Succeeded', mySSH.getBefore()) is None:
|
if re.search('Login Succeeded', mySSH.getBefore()) is None:
|
||||||
msg = 'Could not log into local registry'
|
msg = 'Could not log into local registry'
|
||||||
logging.error(msg)
|
logging.error(msg)
|
||||||
@@ -694,9 +694,9 @@ class Containerize():
|
|||||||
orgTag = 'ci-temp'
|
orgTag = 'ci-temp'
|
||||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||||
for image in imageNames:
|
for image in imageNames:
|
||||||
tagToUse = self.ImageTagToUse(image)
|
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
mySSH.command(f'docker image tag {image}:{orgTag} {tagToUse}', '\$', 5)
|
mySSH.command(f'docker image tag {image}:{orgTag} {imagePrefix}/{tagToUse}', '\$', 5)
|
||||||
mySSH.command(f'docker push {tagToUse}', '\$', 120)
|
mySSH.command(f'docker push {imagePrefix}/{tagToUse}', '\$', 120)
|
||||||
if re.search(': digest:', mySSH.getBefore()) is None:
|
if re.search(': digest:', mySSH.getBefore()) is None:
|
||||||
logging.debug(mySSH.getBefore())
|
logging.debug(mySSH.getBefore())
|
||||||
msg = f'Could not push {image} to local registry : {tagToUse}'
|
msg = f'Could not push {image} to local registry : {tagToUse}'
|
||||||
@@ -704,9 +704,9 @@ class Containerize():
|
|||||||
mySSH.close()
|
mySSH.close()
|
||||||
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
return False
|
return False
|
||||||
mySSH.command(f'docker rmi {tagToUse} {image}:{orgTag}', '\$', 30)
|
mySSH.command(f'docker rmi {imagePrefix}/{tagToUse} {image}:{orgTag}', '\$', 30)
|
||||||
|
|
||||||
mySSH.command('docker logout porcepix.sboai.cs.eurecom.fr', '\$', 5)
|
mySSH.command(f'docker logout {imagePrefix}', '\$', 5)
|
||||||
if re.search('Removing login credentials', mySSH.getBefore()) is None:
|
if re.search('Removing login credentials', mySSH.getBefore()) is None:
|
||||||
msg = 'Could not log off from local registry'
|
msg = 'Could not log off from local registry'
|
||||||
logging.error(msg)
|
logging.error(msg)
|
||||||
@@ -739,25 +739,18 @@ class Containerize():
|
|||||||
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
|
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
|
||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
sys.exit('Insufficient Parameter')
|
sys.exit('Insufficient Parameter')
|
||||||
if lIpAddr != 'none':
|
myCmd = cls_cmd.getConnection(lIpAddr)
|
||||||
logging.debug('Pulling images onto server: ' + lIpAddr)
|
imagePrefix = 'porcepix.sboai.cs.eurecom.fr'
|
||||||
myCmd = cls_cmd.RemoteCmd(lIpAddr)
|
response = myCmd.run(f'docker login -u oaicicd -p oaicicd {imagePrefix}')
|
||||||
else:
|
|
||||||
logging.debug('Pulling images locally')
|
|
||||||
myCmd = cls_cmd.LocalCmd()
|
|
||||||
|
|
||||||
cmd = 'docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr'
|
|
||||||
response = myCmd.run(cmd)
|
|
||||||
if response.returncode != 0:
|
if response.returncode != 0:
|
||||||
msg = 'Could not log into local registry'
|
msg = 'Could not log into local registry'
|
||||||
logging.error(msg)
|
logging.error(msg)
|
||||||
myCmd.close()
|
myCmd.close()
|
||||||
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
for image in self.imageToPull:
|
for image in self.imageToPull:
|
||||||
tagToUse = self.ImageTagToUse(image)
|
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
cmd = f'docker pull {tagToUse}'
|
cmd = f'docker pull {imagePrefix}/{tagToUse}'
|
||||||
response = myCmd.run(cmd, timeout=120)
|
response = myCmd.run(cmd, timeout=120)
|
||||||
if response.returncode != 0:
|
if response.returncode != 0:
|
||||||
logging.debug(response)
|
logging.debug(response)
|
||||||
@@ -766,16 +759,15 @@ class Containerize():
|
|||||||
myCmd.close()
|
myCmd.close()
|
||||||
HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
return False
|
return False
|
||||||
|
myCmd.run(f'docker tag {imagePrefix}/{tagToUse} oai-ci/{tagToUse}')
|
||||||
cmd = 'docker logout porcepix.sboai.cs.eurecom.fr'
|
myCmd.run(f'docker rmi {imagePrefix}/{tagToUse}')
|
||||||
response = myCmd.run(cmd)
|
response = myCmd.run(f'docker logout {imagePrefix}')
|
||||||
if response.returncode != 0:
|
if response.returncode != 0:
|
||||||
msg = 'Could not log off from local registry'
|
msg = 'Could not log off from local registry'
|
||||||
logging.error(msg)
|
logging.error(msg)
|
||||||
myCmd.close()
|
myCmd.close()
|
||||||
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
myCmd.close()
|
myCmd.close()
|
||||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
return True
|
return True
|
||||||
@@ -810,7 +802,8 @@ class Containerize():
|
|||||||
|
|
||||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||||
for image in imageNames:
|
for image in imageNames:
|
||||||
cmd = f'docker rmi {self.ImageTagToUse(image)}'
|
imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
|
cmd = f'docker rmi oai-ci/{imageTag}'
|
||||||
myCmd.run(cmd, reportNonZero=False)
|
myCmd.run(cmd, reportNonZero=False)
|
||||||
|
|
||||||
myCmd.close()
|
myCmd.close()
|
||||||
@@ -845,10 +838,10 @@ class Containerize():
|
|||||||
|
|
||||||
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
|
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
|
||||||
mySSH.command('cp docker-compose.y*ml ci-docker-compose.yml', '\$', 5)
|
mySSH.command('cp docker-compose.y*ml ci-docker-compose.yml', '\$', 5)
|
||||||
imagesList = ['oai-enb', 'oai-gnb', 'oai-nr-cuup']
|
imagesList = ['oai-enb', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s']
|
||||||
for image in imagesList:
|
for image in imagesList:
|
||||||
imageToUse = self.ImageTagToUse(image)
|
imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
mySSH.command(f'sed -i -e "s#image: {image}:latest#image: {imageToUse}#" ci-docker-compose.yml', '\$', 2)
|
mySSH.command(f'sed -i -e "s#image: {image}:latest#image: oai-ci/{imageTag}#" ci-docker-compose.yml', '\$', 2)
|
||||||
localMmeIpAddr = EPC.MmeIPAddress
|
localMmeIpAddr = EPC.MmeIPAddress
|
||||||
mySSH.command('sed -i -e "s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/" ci-docker-compose.yml', '\$', 2)
|
mySSH.command('sed -i -e "s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/" ci-docker-compose.yml', '\$', 2)
|
||||||
|
|
||||||
@@ -966,6 +959,7 @@ class Containerize():
|
|||||||
logging.debug('\u001B[1m Undeploying OAI Object from server: ' + lIpAddr + '\u001B[0m')
|
logging.debug('\u001B[1m Undeploying OAI Object from server: ' + lIpAddr + '\u001B[0m')
|
||||||
mySSH = SSH.SSHConnection()
|
mySSH = SSH.SSHConnection()
|
||||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||||
|
|
||||||
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
|
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
|
||||||
|
|
||||||
svcName = self.services[self.eNB_instance]
|
svcName = self.services[self.eNB_instance]
|
||||||
@@ -981,7 +975,7 @@ class Containerize():
|
|||||||
for s in allServices:
|
for s in allServices:
|
||||||
mySSH.command(f'docker-compose -f ci-docker-compose.yml ps --all -- {s}', '\$', 5, silent=False)
|
mySSH.command(f'docker-compose -f ci-docker-compose.yml ps --all -- {s}', '\$', 5, silent=False)
|
||||||
running = mySSH.getBefore().split('\r\n')[2:-1]
|
running = mySSH.getBefore().split('\r\n')[2:-1]
|
||||||
#logging.debug(f'running services: {running}')
|
logging.debug(f'running services: {running}')
|
||||||
if len(running) > 0: # something is running for that service
|
if len(running) > 0: # something is running for that service
|
||||||
services.append(s)
|
services.append(s)
|
||||||
logging.info(f'stopping services {services}')
|
logging.info(f'stopping services {services}')
|
||||||
@@ -1050,13 +1044,12 @@ class Containerize():
|
|||||||
myCmd.close()
|
myCmd.close()
|
||||||
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
return
|
return
|
||||||
|
|
||||||
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
|
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
|
||||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||||
for image in imageNames:
|
for image in imageNames:
|
||||||
tagToUse = self.ImageTagToUse(image)
|
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@{tagToUse}@" docker-compose-ci.yml'
|
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{tagToUse}@" docker-compose-ci.yml'
|
||||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||||
self.displayedNewTags = True
|
self.displayedNewTags = True
|
||||||
|
|
||||||
@@ -1193,13 +1186,12 @@ class Containerize():
|
|||||||
ymlPath = self.yamlPath[0].split('/')
|
ymlPath = self.yamlPath[0].split('/')
|
||||||
logPath = '../cmake_targets/log/' + ymlPath[1]
|
logPath = '../cmake_targets/log/' + ymlPath[1]
|
||||||
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
|
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
|
||||||
|
|
||||||
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
|
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
|
||||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||||
for image in imageNames:
|
for image in imageNames:
|
||||||
tagToUse = self.ImageTagToUse(image)
|
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||||
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@{tagToUse}@" docker-compose-ci.yml'
|
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{tagToUse}@" docker-compose-ci.yml'
|
||||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||||
self.displayedNewTags = True
|
self.displayedNewTags = True
|
||||||
|
|
||||||
|
|||||||
@@ -605,6 +605,8 @@ class OaiCiTest():
|
|||||||
Target = EPC.MmeIPAddress
|
Target = EPC.MmeIPAddress
|
||||||
elif re.match('OAICN5G', EPC.Type, re.IGNORECASE):
|
elif re.match('OAICN5G', EPC.Type, re.IGNORECASE):
|
||||||
Target = EPC.MmeIPAddress
|
Target = EPC.MmeIPAddress
|
||||||
|
elif re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE):
|
||||||
|
Target = "172.21.6.100"
|
||||||
else:
|
else:
|
||||||
Target = EPC.IPAddress
|
Target = EPC.IPAddress
|
||||||
#ping from module NIC rather than IP address to make sure round trip is over the air
|
#ping from module NIC rather than IP address to make sure round trip is over the air
|
||||||
|
|||||||
@@ -0,0 +1,281 @@
|
|||||||
|
Active_gNBs = ( "gNB-Eurecom-n78_20");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
#device :{
|
||||||
|
# name = "aw2sori_transpro";
|
||||||
|
#}
|
||||||
|
|
||||||
|
gNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
gNB_CU_ID = 0xe00;
|
||||||
|
|
||||||
|
gNB_name = "gNB-Eurecom-n78_20";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = 0x1;
|
||||||
|
plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst =0x1; }) });
|
||||||
|
|
||||||
|
nr_cellid = 12345678L
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
pdsch_AntennaPorts_XP = 2;
|
||||||
|
pusch_AntennaPorts = 2;
|
||||||
|
do_CSIRS = 1;
|
||||||
|
do_SRS = 0;
|
||||||
|
|
||||||
|
pdcch_ConfigSIB1 = (
|
||||||
|
{
|
||||||
|
controlResourceSetZero = 11;
|
||||||
|
searchSpaceZero = 0;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
servingCellConfigCommon = (
|
||||||
|
{
|
||||||
|
#spCellConfigCommon
|
||||||
|
|
||||||
|
physCellId = 0;
|
||||||
|
|
||||||
|
# downlinkConfigCommon
|
||||||
|
#frequencyInfoDL
|
||||||
|
# this is 3410.4 MHz => 301 REs from PointA 25 PRBs + 1 RE
|
||||||
|
absoluteFrequencySSB = 627360;
|
||||||
|
dl_frequencyBand = 78;
|
||||||
|
# this is 3410.4 - (51*12*30e-3/2) = 3401.22 MHz
|
||||||
|
dl_absoluteFrequencyPointA = 626748;
|
||||||
|
#scs-SpecificCarrierList
|
||||||
|
dl_offstToCarrier = 0;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
dl_subcarrierSpacing = 1;
|
||||||
|
dl_carrierBandwidth = 51;
|
||||||
|
#initialDownlinkBWP
|
||||||
|
#genericParameters
|
||||||
|
# this is RBstart=0,L=50 (275*(L-1))+RBstart
|
||||||
|
initialDLBWPlocationAndBandwidth = 13750;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
initialDLBWPsubcarrierSpacing = 1;
|
||||||
|
#pdcch-ConfigCommon
|
||||||
|
initialDLBWPcontrolResourceSetZero = 11; # this means shift of 14, so Coreset is in PRBs 1..48, SSB starts at PRB 15
|
||||||
|
initialDLBWPsearchSpaceZero = 0;
|
||||||
|
#pdsch-ConfigCommon
|
||||||
|
|
||||||
|
#uplinkConfigCommon
|
||||||
|
#frequencyInfoUL
|
||||||
|
ul_frequencyBand = 78;
|
||||||
|
#scs-SpecificCarrierList
|
||||||
|
ul_offstToCarrier = 0;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
ul_subcarrierSpacing = 1;
|
||||||
|
ul_carrierBandwidth = 51;
|
||||||
|
pMax = 20;
|
||||||
|
#initialUplinkBWP
|
||||||
|
#genericParameters
|
||||||
|
initialULBWPlocationAndBandwidth = 13750;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
initialULBWPsubcarrierSpacing = 1;
|
||||||
|
#rach-ConfigCommon
|
||||||
|
#rach-ConfigGeneric
|
||||||
|
prach_ConfigurationIndex = 98;
|
||||||
|
#prach_msg1_FDM
|
||||||
|
#0 = one, 1=two, 2=four, 3=eight
|
||||||
|
prach_msg1_FDM = 0;
|
||||||
|
prach_msg1_FrequencyStart = 0;
|
||||||
|
zeroCorrelationZoneConfig = 15;
|
||||||
|
preambleReceivedTargetPower = -104;
|
||||||
|
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||||
|
preambleTransMax = 6;
|
||||||
|
#powerRampingStep
|
||||||
|
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||||
|
powerRampingStep = 1;
|
||||||
|
#ra_ReponseWindow
|
||||||
|
#1,2,4,8,10,20,40,80
|
||||||
|
ra_ResponseWindow = 4;
|
||||||
|
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||||
|
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||||
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||||
|
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||||
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||||
|
#ra_ContentionResolutionTimer
|
||||||
|
#(0..7) 8,16,24,32,40,48,56,64
|
||||||
|
ra_ContentionResolutionTimer = 7;
|
||||||
|
rsrp_ThresholdSSB = 19;
|
||||||
|
#prach-RootSequenceIndex_PR
|
||||||
|
#1 = 839, 2 = 139
|
||||||
|
prach_RootSequenceIndex_PR = 2;
|
||||||
|
prach_RootSequenceIndex = 1;
|
||||||
|
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||||
|
#
|
||||||
|
msg1_SubcarrierSpacing = 1,
|
||||||
|
# restrictedSetConfig
|
||||||
|
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||||
|
restrictedSetConfig = 0,
|
||||||
|
|
||||||
|
msg3_DeltaPreamble = 1;
|
||||||
|
p0_NominalWithGrant =-96;
|
||||||
|
|
||||||
|
# pucch-ConfigCommon setup :
|
||||||
|
# pucchGroupHopping
|
||||||
|
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||||
|
pucchGroupHopping = 0;
|
||||||
|
hoppingId = 40;
|
||||||
|
p0_nominal = -96;
|
||||||
|
# ssb_PositionsInBurs_BitmapPR
|
||||||
|
# 1=short, 2=medium, 3=long
|
||||||
|
ssb_PositionsInBurst_PR = 2;
|
||||||
|
ssb_PositionsInBurst_Bitmap = 1;
|
||||||
|
|
||||||
|
# ssb_periodicityServingCell
|
||||||
|
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||||
|
ssb_periodicityServingCell = 2;
|
||||||
|
|
||||||
|
# dmrs_TypeA_position
|
||||||
|
# 0 = pos2, 1 = pos3
|
||||||
|
dmrs_TypeA_Position = 0;
|
||||||
|
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
subcarrierSpacing = 1;
|
||||||
|
|
||||||
|
|
||||||
|
#tdd-UL-DL-ConfigurationCommon
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
referenceSubcarrierSpacing = 1;
|
||||||
|
# pattern1
|
||||||
|
# dl_UL_TransmissionPeriodicity
|
||||||
|
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||||
|
dl_UL_TransmissionPeriodicity = 5;
|
||||||
|
nrofDownlinkSlots = 2;
|
||||||
|
nrofDownlinkSymbols = 6;
|
||||||
|
nrofUplinkSlots = 2;
|
||||||
|
nrofUplinkSymbols = 4;
|
||||||
|
|
||||||
|
ssPBCH_BlockPower = -10;
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// AMF parameters:
|
||||||
|
amf_ip_address = ( { ipv4 = "172.21.6.100";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
|
||||||
|
GNB_INTERFACE_NAME_FOR_NG_AMF = "eno33np0";
|
||||||
|
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.124/20";
|
||||||
|
GNB_INTERFACE_NAME_FOR_NGU = "eno33np0";
|
||||||
|
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.124/20";
|
||||||
|
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
MACRLCs = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_s_preference = "local_L1";
|
||||||
|
tr_n_preference = "local_RRC";
|
||||||
|
pusch_TargetSNRx10 = 200;
|
||||||
|
pucch_TargetSNRx10 = 200;
|
||||||
|
ulsch_max_frame_inactivity=0;
|
||||||
|
ul_max_mcs = 15;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "local_mac";
|
||||||
|
prach_dtx_threshold = 120;
|
||||||
|
pucch0_dtx_threshold = 50;
|
||||||
|
pusch_dtx_threshold = 10;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_if_name = "ens7f3";
|
||||||
|
remote_address = "192.168.80.239";
|
||||||
|
local_address = "192.168.80.24";
|
||||||
|
local_portc = 50000;
|
||||||
|
remote_portc = 55444;
|
||||||
|
local_portd = 52001;
|
||||||
|
remote_portd = 52183;
|
||||||
|
local_rf = "no"
|
||||||
|
tr_preference = "udp_ecpri_if5"
|
||||||
|
nb_tx = 2
|
||||||
|
nb_rx = 2
|
||||||
|
att_tx = 16
|
||||||
|
att_rx = 0;
|
||||||
|
num_tp_cores = 4;
|
||||||
|
rxfh_core_id = 9;
|
||||||
|
txfh_core_id = 10;
|
||||||
|
tp_cores = [11,12,13,14];
|
||||||
|
nr_flag = 1;
|
||||||
|
eNB_instances = [0];
|
||||||
|
bands = [78];
|
||||||
|
sl_ahead = 5;
|
||||||
|
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||||
|
bf_weights = [0x00007fff, 0x0000];
|
||||||
|
##beamforming 1x4 matrix: 1 layer x 4 antennas
|
||||||
|
#bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000];
|
||||||
|
## beamforming 2x2 matrix:
|
||||||
|
# bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff];
|
||||||
|
## beamforming 4x4 matrix:
|
||||||
|
#bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
THREAD_STRUCT = (
|
||||||
|
{
|
||||||
|
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||||
|
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||||
|
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||||
|
worker_config = "WORKER_ENABLE";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="high";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
f1ap_log_level ="debug";
|
||||||
|
f1ap_log_verbosity ="medium";
|
||||||
|
ngap_log_level ="debug";
|
||||||
|
ngap_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
|
||||||
+103
-12
@@ -31,8 +31,8 @@
|
|||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
# Import
|
# Import
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
import sys # arg
|
import sys # arg
|
||||||
import re # reg
|
import re # reg
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
@@ -46,10 +46,13 @@ from multiprocessing import Process, Lock, SimpleQueue
|
|||||||
import sshconnection as SSH
|
import sshconnection as SSH
|
||||||
import helpreadme as HELP
|
import helpreadme as HELP
|
||||||
import constants as CONST
|
import constants as CONST
|
||||||
|
import cls_cluster as OC
|
||||||
|
import cls_cmd
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
# Class Declaration
|
# Class Declaration
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
class EPCManagement():
|
class EPCManagement():
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -68,7 +71,13 @@ class EPCManagement():
|
|||||||
self.isMagmaUsed = False
|
self.isMagmaUsed = False
|
||||||
self.cfgDeploy = '--type start-mini --scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap' #from xml, 'mini' is default normal for docker-network.py
|
self.cfgDeploy = '--type start-mini --scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap' #from xml, 'mini' is default normal for docker-network.py
|
||||||
self.cfgUnDeploy = '--type stop-mini --scenario 1' #from xml, 'mini' is default normal for docker-network.py
|
self.cfgUnDeploy = '--type stop-mini --scenario 1' #from xml, 'mini' is default normal for docker-network.py
|
||||||
|
self.OCUrl = "https://api.oai.cs.eurecom.fr:6443"
|
||||||
|
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
|
||||||
|
self.OCUserName = ''
|
||||||
|
self.OCPassword = ''
|
||||||
|
self.OCProjectName = ''
|
||||||
|
self.imageToPull = ''
|
||||||
|
self.eNBSourceCodePath = ''
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
# EPC management functions
|
# EPC management functions
|
||||||
@@ -235,8 +244,7 @@ class EPCManagement():
|
|||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.SourceCodePath, self.Type)
|
HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.SourceCodePath, self.Type)
|
||||||
sys.exit('Insufficient EPC Parameters')
|
sys.exit('Insufficient EPC Parameters')
|
||||||
mySSH = SSH.SSHConnection()
|
mySSH = cls_cmd.getConnection(self.IPAddress)
|
||||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
|
||||||
html_cell = ''
|
html_cell = ''
|
||||||
if re.match('ltebox', self.Type, re.IGNORECASE):
|
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
logging.debug('Using the SABOX simulated HSS')
|
logging.debug('Using the SABOX simulated HSS')
|
||||||
@@ -286,6 +294,40 @@ class EPCManagement():
|
|||||||
if res4 is not None:
|
if res4 is not None:
|
||||||
html_cell += '(' + res4.group('date') + ')'
|
html_cell += '(' + res4.group('date') + ')'
|
||||||
html_cell += '\n'
|
html_cell += '\n'
|
||||||
|
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||||
|
self.testCase_id = HTML.testCase_id
|
||||||
|
imageNames = ["oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "mysql","oai-traffic-server"]
|
||||||
|
logging.debug('Deploying OAI CN5G on Openshift Cluster')
|
||||||
|
lIpAddr = self.IPAddress
|
||||||
|
lSourcePath = self.SourceCodePath
|
||||||
|
succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, self.OCProjectName)
|
||||||
|
if not succeeded:
|
||||||
|
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||||
|
return False
|
||||||
|
for ii in imageNames:
|
||||||
|
mySSH.run(f'helm uninstall {ii}', reportNonZero=False)
|
||||||
|
mySSH.run(f'helm spray {lSourcePath}/ci-scripts/charts/oai-5g-basic/.')
|
||||||
|
ret = mySSH.run(f'oc get pods', silent=True)
|
||||||
|
if ret.stdout.count('Running') != 9:
|
||||||
|
logging.error('\u001B[1m Deploying 5GCN Failed using helm chart on OC Cluster\u001B[0m')
|
||||||
|
for ii in imageNames:
|
||||||
|
mySSH.run('helm uninstall '+ ii)
|
||||||
|
ret = mySSH.run(f'oc get pods')
|
||||||
|
if re.search('No resources found', ret.stdout):
|
||||||
|
logging.debug('All pods uninstalled')
|
||||||
|
OC.OC_logout(mySSH)
|
||||||
|
mySSH.close()
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
|
||||||
|
return False
|
||||||
|
ret = mySSH.run(f'oc get pods', silent=True)
|
||||||
|
for line in ret.stdout.split('\n')[1:]:
|
||||||
|
columns = line.strip().split()
|
||||||
|
name = columns[0]
|
||||||
|
status = columns[2]
|
||||||
|
html_cell += status + ' ' + name
|
||||||
|
html_cell += '\n'
|
||||||
|
OC.OC_logout(mySSH)
|
||||||
else:
|
else:
|
||||||
logging.error('This option should not occur!')
|
logging.error('This option should not occur!')
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
@@ -311,6 +353,10 @@ class EPCManagement():
|
|||||||
else:
|
else:
|
||||||
logging.error('no container with name oai-amf found, could not retrieve AMF IP address')
|
logging.error('no container with name oai-amf found, could not retrieve AMF IP address')
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
|
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||||
|
mySSH = SSH.SSHConnection()
|
||||||
|
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||||
|
response=mySSH.command3('oc pods ls -f name=oai-amf', 10)
|
||||||
|
|
||||||
def CheckHSSProcess(self, status_queue):
|
def CheckHSSProcess(self, status_queue):
|
||||||
try:
|
try:
|
||||||
@@ -513,8 +559,9 @@ class EPCManagement():
|
|||||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
def Terminate5GCN(self, HTML):
|
def Terminate5GCN(self, HTML):
|
||||||
mySSH = SSH.SSHConnection()
|
imageNames = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"]
|
||||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
containerInPods = ["", "-c nrf", "-c amf", "-c smf", "-c spgwu", "-c ausf", "-c udm", "-c udr", ""]
|
||||||
|
mySSH = cls_cmd.getConnection(self.IPAddress)
|
||||||
message = ''
|
message = ''
|
||||||
if re.match('ltebox', self.Type, re.IGNORECASE):
|
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
logging.debug('Terminating SA BOX')
|
logging.debug('Terminating SA BOX')
|
||||||
@@ -545,6 +592,37 @@ class EPCManagement():
|
|||||||
else:
|
else:
|
||||||
message = 'No Tracking area update request'
|
message = 'No Tracking area update request'
|
||||||
logging.debug(message)
|
logging.debug(message)
|
||||||
|
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||||
|
logging.debug('Terminating OAI CN5G on Openshift Cluster')
|
||||||
|
lIpAddr = self.IPAddress
|
||||||
|
lSourcePath = self.SourceCodePath
|
||||||
|
mySSH.run(f'rm -Rf {lSourcePath}/logs')
|
||||||
|
mySSH.run(f'mkdir -p {lSourcePath}/logs')
|
||||||
|
logging.debug('OC OAI CN5G - Collecting Log files to workspace')
|
||||||
|
succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, self.OCProjectName)
|
||||||
|
if not succeeded:
|
||||||
|
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||||
|
return False
|
||||||
|
mySSH.run(f'oc describe pod &> {lSourcePath}/logs/describe-pods-post-test.log')
|
||||||
|
mySSH.run(f'oc get pods.metrics.k8s &> {lSourcePath}/logs/nf-resource-consumption.log')
|
||||||
|
for ii, ci in zip(imageNames, containerInPods):
|
||||||
|
podName = mySSH.run(f"oc get pods | grep {ii} | awk \'{{print $1}}\'").stdout.strip()
|
||||||
|
if not podName:
|
||||||
|
logging.debug(f'{ii} pod not found!')
|
||||||
|
HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER)
|
||||||
|
HTML.CreateHtmlTabFooter(False)
|
||||||
|
mySSH.run(f'oc logs -f {podName} {ci} &> {lSourcePath}/logs/{ii}.log &')
|
||||||
|
mySSH.run(f'helm uninstall {ii}')
|
||||||
|
podName = ''
|
||||||
|
mySSH.run(f'cd {lSourcePath}/logs && zip -r -qq test_logs_CN.zip *.log')
|
||||||
|
mySSH.copyin(f'{lSourcePath}/logs/test_logs_CN.zip','test_logs_CN.zip')
|
||||||
|
ret = mySSH.run(f'oc get pods', silent=True)
|
||||||
|
res = re.search('No resources found in oaicicd-ran namespace.', ret.stdout)
|
||||||
|
if res is not None:
|
||||||
|
logging.debug('OC OAI CN5G components uninstalled')
|
||||||
|
message = 'OC OAI CN5G components uninstalled'
|
||||||
|
OC.OC_logout(mySSH)
|
||||||
else:
|
else:
|
||||||
logging.error('This should not happen!')
|
logging.error('This should not happen!')
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
@@ -784,6 +862,8 @@ class EPCManagement():
|
|||||||
mySSH.command('zip hss.log.zip hss_check_run.*', '\$', 60)
|
mySSH.command('zip hss.log.zip hss_check_run.*', '\$', 60)
|
||||||
elif re.match('OAICN5G', self.Type, re.IGNORECASE):
|
elif re.match('OAICN5G', self.Type, re.IGNORECASE):
|
||||||
logging.debug('LogCollect is bypassed for that variant')
|
logging.debug('LogCollect is bypassed for that variant')
|
||||||
|
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||||
|
logging.debug('LogCollect is bypassed for that variant')
|
||||||
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('zip hss.log.zip hss*.log', '\$', 60)
|
mySSH.command('zip hss.log.zip hss*.log', '\$', 60)
|
||||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm hss*.log', '\$', 5)
|
mySSH.command('echo ' + self.Password + ' | sudo -S rm hss*.log', '\$', 5)
|
||||||
@@ -798,10 +878,13 @@ class EPCManagement():
|
|||||||
mySSH.close()
|
mySSH.close()
|
||||||
|
|
||||||
def LogCollectMME(self):
|
def LogCollectMME(self):
|
||||||
mySSH = SSH.SSHConnection()
|
if self.Type != 'OC-OAI-CN5G':
|
||||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
mySSH = SSH.SSHConnection()
|
||||||
mySSH.command('cd ' + self.SourceCodePath + '/scripts', '\$', 5)
|
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||||
mySSH.command('rm -f mme.log.zip', '\$', 5)
|
mySSH.command('cd ' + self.SourceCodePath + '/scripts', '\$', 5)
|
||||||
|
mySSH.command('rm -f mme.log.zip', '\$', 5)
|
||||||
|
else:
|
||||||
|
mySSH = cls_cmd.getConnection(self.IPAddress)
|
||||||
if re.match('OAI-Rel14-Docker', self.Type, re.IGNORECASE):
|
if re.match('OAI-Rel14-Docker', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('docker inspect prod-oai-mme', '\$', 10)
|
mySSH.command('docker inspect prod-oai-mme', '\$', 10)
|
||||||
result = re.search('No such object', mySSH.getBefore())
|
result = re.search('No such object', mySSH.getBefore())
|
||||||
@@ -819,6 +902,10 @@ class EPCManagement():
|
|||||||
mySSH.command('cp -f /tmp/oai-cn5g-v1.5.pcap .','\$', 30)
|
mySSH.command('cp -f /tmp/oai-cn5g-v1.5.pcap .','\$', 30)
|
||||||
mySSH.command('zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap','\$', 30)
|
mySSH.command('zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap','\$', 30)
|
||||||
mySSH.command('mv mme.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
mySSH.command('mv mme.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
||||||
|
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||||
|
mySSH.run('cd ' + self.SourceCodePath + '/logs')
|
||||||
|
mySSH.run('zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap')
|
||||||
|
mySSH.run('mv mme.log.zip ' + self.SourceCodePath + '/scripts')
|
||||||
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('zip mme.log.zip mme*.log', '\$', 60)
|
mySSH.command('zip mme.log.zip mme*.log', '\$', 60)
|
||||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm mme*.log', '\$', 5)
|
mySSH.command('echo ' + self.Password + ' | sudo -S rm mme*.log', '\$', 5)
|
||||||
@@ -852,6 +939,10 @@ class EPCManagement():
|
|||||||
mySSH.command('cd ' + self.SourceCodePath + '/logs','\$', 5)
|
mySSH.command('cd ' + self.SourceCodePath + '/logs','\$', 5)
|
||||||
mySSH.command('zip spgw.log.zip oai-smf.log oai-spgwu.log','\$', 30)
|
mySSH.command('zip spgw.log.zip oai-smf.log oai-spgwu.log','\$', 30)
|
||||||
mySSH.command('mv spgw.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
mySSH.command('mv spgw.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
||||||
|
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||||
|
mySSH.command('cd ' + self.SourceCodePath + '/logs','\$', 5)
|
||||||
|
mySSH.command('zip spgw.log.zip oai-smf.log oai-spgwu.log','\$', 30)
|
||||||
|
mySSH.command('mv spgw.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
||||||
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('zip spgw.log.zip spgw*.log', '\$', 60)
|
mySSH.command('zip spgw.log.zip spgw*.log', '\$', 60)
|
||||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm spgw*.log', '\$', 5)
|
mySSH.command('echo ' + self.Password + ' | sudo -S rm spgw*.log', '\$', 5)
|
||||||
|
|||||||
+14
-7
@@ -38,12 +38,12 @@ import helpreadme as HELP
|
|||||||
import constants as CONST
|
import constants as CONST
|
||||||
|
|
||||||
|
|
||||||
import cls_oaicitest #main class for OAI CI test framework
|
import cls_oaicitest #main class for OAI CI test framework
|
||||||
import cls_physim #class PhySim for physical simulators build and test
|
import cls_physim #class PhySim for physical simulators build and test
|
||||||
import cls_containerize #class Containerize for all container-based operations on RAN/UE objects
|
import cls_containerize #class Containerize for all container-based operations on RAN/UE objects
|
||||||
import cls_static_code_analysis #class for static code analysis
|
import cls_static_code_analysis #class for static code analysis
|
||||||
import cls_physim1 #class PhySim for physical simulators deploy and run
|
import cls_physim1 #class PhySim for physical simulators deploy and run
|
||||||
import cls_cluster # class for building/deploying on cluster
|
import cls_cluster # class for building/deploying on cluster
|
||||||
|
|
||||||
import sshconnection
|
import sshconnection
|
||||||
import epc
|
import epc
|
||||||
@@ -430,7 +430,11 @@ def GetParametersFromXML(action):
|
|||||||
RAN.node = test.findtext('node')
|
RAN.node = test.findtext('node')
|
||||||
RAN.command = test.findtext('command')
|
RAN.command = test.findtext('command')
|
||||||
RAN.command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes']
|
RAN.command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes']
|
||||||
|
elif action == 'Pull_Cluster_Image':
|
||||||
|
# CLUSTER.imageToPull.clear()
|
||||||
|
string_field = test.findtext('images_to_pull')
|
||||||
|
if (string_field is not None):
|
||||||
|
CLUSTER.imageToPull = string_field.split()
|
||||||
else:
|
else:
|
||||||
logging.warning(f"unknown action {action} from option-parsing point-of-view")
|
logging.warning(f"unknown action {action} from option-parsing point-of-view")
|
||||||
|
|
||||||
@@ -829,6 +833,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
HTML=ldpc.Run_NRulsimTest(HTML,CONST,id)
|
HTML=ldpc.Run_NRulsimTest(HTML,CONST,id)
|
||||||
if ldpc.exitStatus==1:
|
if ldpc.exitStatus==1:
|
||||||
RAN.prematureExit = True
|
RAN.prematureExit = True
|
||||||
|
elif action == 'Pull_Cluster_Image':
|
||||||
|
if not CLUSTER.PullClusterImage(HTML,RAN):
|
||||||
|
RAN.prematureExit = True
|
||||||
elif action == 'Build_Cluster_Image':
|
elif action == 'Build_Cluster_Image':
|
||||||
if not CLUSTER.BuildClusterImage(HTML):
|
if not CLUSTER.BuildClusterImage(HTML):
|
||||||
RAN.prematureExit = True
|
RAN.prematureExit = True
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
- Build_Proxy
|
- Build_Proxy
|
||||||
- Build_Cluster_Image
|
- Build_Cluster_Image
|
||||||
|
- Pull_Cluster_Image
|
||||||
- Build_PhySim
|
- Build_PhySim
|
||||||
- Run_LDPCTest
|
- Run_LDPCTest
|
||||||
- Run_LDPCt1Test
|
- Run_LDPCt1Test
|
||||||
|
|||||||
@@ -0,0 +1,122 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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-5G-AW2S</htmlTabRef>
|
||||||
|
<htmlTabName>20 MHz TDD SA</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<repeatCount>1</repeatCount>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
010000
|
||||||
|
001000
|
||||||
|
020000
|
||||||
|
002000
|
||||||
|
002002
|
||||||
|
000100
|
||||||
|
000200
|
||||||
|
003000
|
||||||
|
004000
|
||||||
|
000002
|
||||||
|
030000
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="010000">
|
||||||
|
<class>Pull_Cluster_Image</class>
|
||||||
|
<desc>Pull Images from Cluster</desc>
|
||||||
|
<images_to_pull>oai-gnb-aw2s</images_to_pull>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="020000">
|
||||||
|
<class>Deploy_Object</class>
|
||||||
|
<desc>Deploy gNB (TDD/Band78/20MHz/aw2s) in a container</desc>
|
||||||
|
<yaml_path>ci-scripts/yaml_files/sa_aw2s_gnb</yaml_path>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="001000">
|
||||||
|
<class>Initialize_UE</class>
|
||||||
|
<desc>Initialize Amarisoft UE</desc>
|
||||||
|
<id>amarisoft_ue</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="002000">
|
||||||
|
<class>Attach_UE</class>
|
||||||
|
<desc>Attach UE</desc>
|
||||||
|
<id>amarisoft_ue_1</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="002002">
|
||||||
|
<class>Attach_UE</class>
|
||||||
|
<desc>Attach UE</desc>
|
||||||
|
<id>amarisoft_ue_2</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000100">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping: 20pings in 20sec</desc>
|
||||||
|
<id>amarisoft_ue_1 amarisoft_ue_2</id>
|
||||||
|
<ping_args>-c 20</ping_args>
|
||||||
|
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||||
|
<ping_rttavg_threshold>15</ping_rttavg_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000200">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping: 100pings in 20sec</desc>
|
||||||
|
<id>amarisoft_ue_1 amarisoft_ue_2</id>
|
||||||
|
<ping_args>-c 100 -i 0.2</ping_args>
|
||||||
|
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||||
|
<ping_rttavg_threshold>15</ping_rttavg_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="003000">
|
||||||
|
<class>Detach_UE</class>
|
||||||
|
<desc>Detach UE</desc>
|
||||||
|
<id>amarisoft_ue_1 amarisoft_ue_2</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="004000">
|
||||||
|
<class>Terminate_UE</class>
|
||||||
|
<desc>Terminate UE</desc>
|
||||||
|
<id>amarisoft_ue</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000002">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="030000">
|
||||||
|
<class>Undeploy_Object</class>
|
||||||
|
<desc>Undeploy gNB</desc>
|
||||||
|
<yaml_path>ci-scripts/yaml_files/sa_aw2s_gnb</yaml_path>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<d_retx_th>20,100,100,100</d_retx_th>
|
||||||
|
<u_retx_th>20,100,100,100</u_retx_th>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
oai-gnb:
|
||||||
|
image: oai-gnb-aw2s:latest
|
||||||
|
privileged: true
|
||||||
|
network_mode: "host"
|
||||||
|
container_name: oai-gnb-aw2s
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
USE_VOLUMED_CONF: 'yes'
|
||||||
|
USE_ADDITIONAL_OPTIONS: --sa
|
||||||
|
volumes:
|
||||||
|
- ../../conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf:/opt/oai-gnb-aw2s/etc/mounted.conf
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep nr-softmodem"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
+6
-2
@@ -21,6 +21,7 @@
|
|||||||
| starsky | 172.21.18.45 | CI-Starsky-Legacy-TDD-eNB | eNB (B40) | b200mini (30A3E3C) |
|
| starsky | 172.21.18.45 | CI-Starsky-Legacy-TDD-eNB | eNB (B40) | b200mini (30A3E3C) |
|
||||||
| carabe | 172.21.18.47 | CI-Carabe-Legacy-FDD-OAI-LTE-UE | UE (B7UE) | B200mini (30AE8C9) |
|
| carabe | 172.21.18.47 | CI-Carabe-Legacy-FDD-OAI-LTE-UE | UE (B7UE) | B200mini (30AE8C9) |
|
||||||
| nokiabox | 172.21.19.39 | _None_ | gNB (Nokia), 5GC | _Nokia RF integrated_ |
|
| nokiabox | 172.21.19.39 | _None_ | gNB (Nokia), 5GC | _Nokia RF integrated_ |
|
||||||
|
| avra | 172.21.16.124 | CI-Avra-Usage | gNB (n78) | AW2S Jaguar (192.168.80.239) |
|
||||||
|
|
||||||
Note: The available resources, and their current usage, is indicated here:
|
Note: The available resources, and their current usage, is indicated here:
|
||||||
- [Lockable resources of jenkins-oai](https://jenkins-oai.eurecom.fr/lockable-resources/):
|
- [Lockable resources of jenkins-oai](https://jenkins-oai.eurecom.fr/lockable-resources/):
|
||||||
@@ -56,8 +57,9 @@ Note: The available resources, and their current usage, is indicated here:
|
|||||||
|
|
||||||
**Purpose**: AW2S tests with Amarisoft
|
**Purpose**: AW2S tests with Amarisoft
|
||||||
|
|
||||||
Picture: TBD
|

|
||||||
|
|
||||||
|
[PDF version](testbenches_doc_resources/5g-aw2s-bench.pdf) | [LaTeX/TikZ version](testbenches_doc_resources/5g-aw2s-bench.tex) if you want to modify to reflect your setup
|
||||||
|
|
||||||
### 4G Testbench(es)
|
### 4G Testbench(es)
|
||||||
|
|
||||||
@@ -67,7 +69,6 @@ Picture: TBD
|
|||||||
|
|
||||||
[PDF version](testbenches_doc_resources/4g-faraday-bench.pdf) | [LaTeX/TikZ version](testbenches_doc_resources/4g-faraday-bench.tex) if you want to modify to reflect your setup
|
[PDF version](testbenches_doc_resources/4g-faraday-bench.pdf) | [LaTeX/TikZ version](testbenches_doc_resources/4g-faraday-bench.tex) if you want to modify to reflect your setup
|
||||||
|
|
||||||
|
|
||||||
## Pipelines
|
## Pipelines
|
||||||
|
|
||||||
### [RAN-Container-Parent](https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/)
|
### [RAN-Container-Parent](https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/)
|
||||||
@@ -115,6 +116,9 @@ Webhook
|
|||||||
- basic SA test (20 MHz TDD), F1, reestablishment, ...
|
- basic SA test (20 MHz TDD), F1, reestablishment, ...
|
||||||
- [RAN-Ubuntu20-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-Ubuntu18-Image-Builder/)
|
- [RAN-Ubuntu20-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-Ubuntu18-Image-Builder/)
|
||||||
- obelix: Ubuntu 20 image build using docker (Note: builds U20 images while pipeline is named U18!)
|
- obelix: Ubuntu 20 image build using docker (Note: builds U20 images while pipeline is named U18!)
|
||||||
|
- [RAN-SA-AW2S-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-AW2S-CN5G/)
|
||||||
|
- 5G-NR SA test setup: Avra(RHEL9.1)/Manarola(U22PRO) + AW2S, Amarisoft UE x1, OAI CN5G
|
||||||
|
- uses OpenShift cluster for CN deployment and container images for gNB deployment
|
||||||
|
|
||||||
### RAN-CI-NSA-Trigger
|
### RAN-CI-NSA-Trigger
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,32 @@
|
|||||||
|
\documentclass{standalone}
|
||||||
|
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{backgrounds, positioning, shapes.symbols}
|
||||||
|
\usepackage{helvet}
|
||||||
|
\renewcommand*{\rmdefault}{\sfdefault}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
[
|
||||||
|
font=\footnotesize,
|
||||||
|
faraday/.style={minimum size=3cm, draw, dashed},
|
||||||
|
duplexer/.style={draw,fill=white},
|
||||||
|
]
|
||||||
|
|
||||||
|
\node[label=above:avra] (avra)
|
||||||
|
{\includegraphics[width=1.2cm]{server}};
|
||||||
|
\node[right=0.5cm of avra, label=above:AW2S] (aw2s)
|
||||||
|
{\includegraphics[width=1.2cm]{aw2s}} edge (avra);
|
||||||
|
\node[right=.2cm of aw2s, duplexer] (b78o) {n78} edge (aw2s);
|
||||||
|
\node[above right=-0.7cm and 0.35cm of b78o.east] (anto1)
|
||||||
|
{\includegraphics[width=0.3cm]{antenna}} edge (b78o);
|
||||||
|
\node[below right=-0.7cm and 0.35cm of b78o.east] (anto2)
|
||||||
|
{\includegraphics[width=0.3cm]{antenna}} edge (b78o);
|
||||||
|
|
||||||
|
\node[right=4cm of aw2s, label=above:Amarisoft UE] (amariue)
|
||||||
|
{\includegraphics[width=0.7cm]{amariue}};
|
||||||
|
\node[right=3cm of aw2s] (anto3)
|
||||||
|
{\includegraphics[width=0.3cm]{antenna}} edge (amariue);
|
||||||
|
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{document}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 609 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 453 KiB |
@@ -84,6 +84,7 @@ COPY --from=gnb-base \
|
|||||||
/lib64/
|
/lib64/
|
||||||
|
|
||||||
RUN ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/libthirdparty_transpro.so && \
|
RUN ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/libthirdparty_transpro.so && \
|
||||||
|
ln -s /usr/local/lib/liboai_eth_transpro.so /usr/local/lib/liboai_transpro.so && \
|
||||||
ldconfig
|
ldconfig
|
||||||
|
|
||||||
WORKDIR /opt/oai-gnb-aw2s
|
WORKDIR /opt/oai-gnb-aw2s
|
||||||
|
|||||||
Reference in New Issue
Block a user