Merge branch 'rh_ci_next' of https://gitlab.eurecom.fr/oai/openairinterface5g into rh_ci_next
This commit is contained in:
@@ -66,7 +66,8 @@ pipeline {
|
|||||||
"Test-IF4p5-TDD-Band38-Multi-RRU",
|
"Test-IF4p5-TDD-Band38-Multi-RRU",
|
||||||
"Test-eNB-OAI-UE-FDD-Band7",
|
"Test-eNB-OAI-UE-FDD-Band7",
|
||||||
"Test-Mono-FDD-Band13-X2-HO",
|
"Test-Mono-FDD-Band13-X2-HO",
|
||||||
"Test-TDD-Band78-gNB-NR-UE"
|
"Test-TDD-Band78-gNB-NR-UE",
|
||||||
|
"Test-OCP-FDD-Band7"
|
||||||
])
|
])
|
||||||
ansiColor('xterm')
|
ansiColor('xterm')
|
||||||
}
|
}
|
||||||
@@ -683,6 +684,25 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stage ("Test OAI OCP-eNB - FDD - Band 7 - B210") {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
triggerSlaveJob ('OCPeNB-FDD-Band7-B210', 'Test-OCP-FDD-Band7')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
script {
|
||||||
|
finalizeSlaveJob('OCPeNB-FDD-Band7-B210')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
failure {
|
||||||
|
script {
|
||||||
|
currentBuild.result = 'FAILURE'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
always {
|
always {
|
||||||
|
|||||||
+284
@@ -0,0 +1,284 @@
|
|||||||
|
Active_eNBs = ( "eNB-Eurecom-LTEBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
eNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
# real_time choice in {hard, rt-preempt, no}
|
||||||
|
real_time = "no";
|
||||||
|
////////// Identification parameters:
|
||||||
|
eNB_ID = 0xe01;
|
||||||
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
eNB_name = "eNB-Eurecom-LTEBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = 1;
|
||||||
|
plmn_list = (
|
||||||
|
{ mcc = 222; mnc = 01; mnc_length = 2; }
|
||||||
|
);
|
||||||
|
|
||||||
|
tr_s_preference = "local_mac"
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
component_carriers = (
|
||||||
|
{
|
||||||
|
node_function = "eNodeB_3GPP";
|
||||||
|
node_timing = "synch_to_ext_device";
|
||||||
|
node_synch_ref = 0;
|
||||||
|
nb_antenna_ports = 1;
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
frame_type = "FDD";
|
||||||
|
tdd_config = 3;
|
||||||
|
tdd_config_s = 0;
|
||||||
|
prefix_type = "NORMAL";
|
||||||
|
eutra_band = 7;
|
||||||
|
downlink_frequency = 2680000000L;
|
||||||
|
uplink_frequency_offset = -120000000;
|
||||||
|
|
||||||
|
Nid_cell = 0;
|
||||||
|
N_RB_DL = 25;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
|
nb_antennas_tx = 1;
|
||||||
|
nb_antennas_rx = 1;
|
||||||
|
prach_root = 0;
|
||||||
|
tx_gain = 90;
|
||||||
|
rx_gain = 115;
|
||||||
|
pbch_repetition = "FALSE";
|
||||||
|
|
||||||
|
prach_config_index = 0;
|
||||||
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
|
prach_freq_offset = 2;
|
||||||
|
|
||||||
|
pucch_delta_shift = 1;
|
||||||
|
pucch_nRB_CQI = 0;
|
||||||
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 0;
|
||||||
|
pdsch_referenceSignalPower = -29;
|
||||||
|
pdsch_p_b = 0;
|
||||||
|
pusch_n_SB = 1;
|
||||||
|
pusch_enable64QAM = "DISABLE";
|
||||||
|
pusch_hoppingMode = "interSubFrame";
|
||||||
|
pusch_hoppingOffset = 0;
|
||||||
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
|
pusch_groupAssignment = 0;
|
||||||
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
|
pusch_nDMRS1 = 1;
|
||||||
|
phich_duration = "NORMAL";
|
||||||
|
phich_resource = "ONESIXTH";
|
||||||
|
srs_enable = "DISABLE";
|
||||||
|
/*
|
||||||
|
srs_BandwidthConfig =;
|
||||||
|
srs_SubframeConfig =;
|
||||||
|
srs_ackNackST =;
|
||||||
|
srs_MaxUpPts =;
|
||||||
|
*/
|
||||||
|
|
||||||
|
pusch_p0_Nominal = -96;
|
||||||
|
pusch_alpha = "AL1";
|
||||||
|
pucch_p0_Nominal = -96;
|
||||||
|
msg3_delta_Preamble = 6;
|
||||||
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
|
rach_numberOfRA_Preambles = 64;
|
||||||
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
|
/*
|
||||||
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
|
rach_messageSizeGroupA = ;
|
||||||
|
rach_messagePowerOffsetGroupB = ;
|
||||||
|
*/
|
||||||
|
rach_powerRampingStep = 4;
|
||||||
|
rach_preambleInitialReceivedTargetPower = -108;
|
||||||
|
rach_preambleTransMax = 10;
|
||||||
|
rach_raResponseWindowSize = 10;
|
||||||
|
rach_macContentionResolutionTimer = 48;
|
||||||
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
|
pcch_default_PagingCycle = 128;
|
||||||
|
pcch_nB = "oneT";
|
||||||
|
bcch_modificationPeriodCoeff = 2;
|
||||||
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
|
ue_TimersAndConstants_n310 = 20;
|
||||||
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
|
||||||
|
//Parameters for SIB18
|
||||||
|
rxPool_sc_CP_Len = "normal";
|
||||||
|
rxPool_sc_Period = "sf40";
|
||||||
|
rxPool_data_CP_Len = "normal";
|
||||||
|
rxPool_ResourceConfig_prb_Num = 20;
|
||||||
|
rxPool_ResourceConfig_prb_Start = 5;
|
||||||
|
rxPool_ResourceConfig_prb_End = 44;
|
||||||
|
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
|
rxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
|
/*
|
||||||
|
rxPool_dataHoppingConfig_hoppingParameter = 0;
|
||||||
|
rxPool_dataHoppingConfig_numSubbands = "ns1";
|
||||||
|
rxPool_dataHoppingConfig_rbOffset = 0;
|
||||||
|
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
|
||||||
|
*/
|
||||||
|
// Parameters for SIB19
|
||||||
|
discRxPool_cp_Len = "normal"
|
||||||
|
discRxPool_discPeriod = "rf32"
|
||||||
|
discRxPool_numRetx = 1;
|
||||||
|
discRxPool_numRepetition = 2;
|
||||||
|
discRxPool_ResourceConfig_prb_Num = 5;
|
||||||
|
discRxPool_ResourceConfig_prb_Start = 3;
|
||||||
|
discRxPool_ResourceConfig_prb_End = 21;
|
||||||
|
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
|
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
srb1_parameters :
|
||||||
|
{
|
||||||
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
|
timer_poll_retransmit = 80;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||||
|
timer_reordering = 35;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||||
|
timer_status_prohibit = 0;
|
||||||
|
|
||||||
|
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||||
|
poll_pdu = 4;
|
||||||
|
|
||||||
|
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||||
|
poll_byte = 99999;
|
||||||
|
|
||||||
|
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||||
|
max_retx_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
enable_measurement_reports = "yes";
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
///X2
|
||||||
|
enable_x2 = "yes";
|
||||||
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
|
||||||
|
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "eth1";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
|
||||||
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
|
||||||
|
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
|
||||||
|
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||||
|
};
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="high";
|
||||||
|
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 ="debug";
|
||||||
|
rlc_log_verbosity ="high";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="high";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
MACRLCs = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_s_preference = "local_L1";
|
||||||
|
tr_n_preference = "local_RRC";
|
||||||
|
phy_test_mode = 0;
|
||||||
|
puSch10xSnr = 160;
|
||||||
|
puCch10xSnr = 160;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
THREAD_STRUCT = (
|
||||||
|
{
|
||||||
|
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||||
|
worker_config = "ENABLE";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "local_mac";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_rf = "yes"
|
||||||
|
nb_tx = 1
|
||||||
|
nb_rx = 1
|
||||||
|
att_tx = 0
|
||||||
|
att_rx = 0;
|
||||||
|
bands = [7];
|
||||||
|
max_pdschReferenceSignalPower = -27;
|
||||||
|
max_rxgain = 118;
|
||||||
|
eNB_instances = [0];
|
||||||
|
clock_src = "external";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="high";
|
||||||
|
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 ="high";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="high";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
@@ -0,0 +1,291 @@
|
|||||||
|
Active_gNBs = ( "gNB-Eurecom-5GNRBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
gNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
gNB_ID = 0xe00;
|
||||||
|
|
||||||
|
cell_type = "CELL_MACRO_GNB";
|
||||||
|
gNB_name = "gNB-Eurecom-5GNRBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = 1;
|
||||||
|
plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;});
|
||||||
|
|
||||||
|
tr_s_preference = "local_mac"
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
ssb_SubcarrierOffset = 31; //0;
|
||||||
|
pdsch_AntennaPorts = 1;
|
||||||
|
|
||||||
|
servingCellConfigCommon = (
|
||||||
|
{
|
||||||
|
#spCellConfigCommon
|
||||||
|
|
||||||
|
physCellId = 0;
|
||||||
|
|
||||||
|
# downlinkConfigCommon
|
||||||
|
#frequencyInfoDL
|
||||||
|
# this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP)
|
||||||
|
absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell
|
||||||
|
dl_frequencyBand = 78;
|
||||||
|
# this is 3600 MHz
|
||||||
|
dl_absoluteFrequencyPointA = 640000;
|
||||||
|
#scs-SpecificCarrierList
|
||||||
|
dl_offstToCarrier = 0;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
dl_subcarrierSpacing = 1;
|
||||||
|
dl_carrierBandwidth = 106;
|
||||||
|
#initialDownlinkBWP
|
||||||
|
#genericParameters
|
||||||
|
# this is RBstart=84,L=13 (275*(L-1))+RBstart
|
||||||
|
initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
initialDLBWPsubcarrierSpacing = 1;
|
||||||
|
#pdcch-ConfigCommon
|
||||||
|
initialDLBWPcontrolResourceSetZero = 0;
|
||||||
|
initialDLBWPsearchSpaceZero = 0;
|
||||||
|
#pdsch-ConfigCommon
|
||||||
|
#pdschTimeDomainAllocationList (up to 16 entries)
|
||||||
|
initialDLBWPk0_0 = 0;
|
||||||
|
#initialULBWPmappingType
|
||||||
|
#0=typeA,1=typeB
|
||||||
|
initialDLBWPmappingType_0 = 0;
|
||||||
|
#this is SS=1,L=13
|
||||||
|
initialDLBWPstartSymbolAndLength_0 = 40;
|
||||||
|
|
||||||
|
initialDLBWPk0_1 = 0;
|
||||||
|
initialDLBWPmappingType_1 = 0;
|
||||||
|
#this is SS=2,L=12
|
||||||
|
initialDLBWPstartSymbolAndLength_1 = 53;
|
||||||
|
|
||||||
|
initialDLBWPk0_2 = 0;
|
||||||
|
initialDLBWPmappingType_2 = 0;
|
||||||
|
#this is SS=1,L=12
|
||||||
|
initialDLBWPstartSymbolAndLength_2 = 54;
|
||||||
|
|
||||||
|
initialDLBWPk0_3 = 0;
|
||||||
|
initialDLBWPmappingType_3 = 0;
|
||||||
|
#this is SS=1,L=4 //5 (4 is for 43, 5 is for 57)
|
||||||
|
initialDLBWPstartSymbolAndLength_3 = 57; //43; //57;
|
||||||
|
#uplinkConfigCommon
|
||||||
|
#frequencyInfoUL
|
||||||
|
ul_frequencyBand = 78;
|
||||||
|
#scs-SpecificCarrierList
|
||||||
|
ul_offstToCarrier = 0;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
ul_subcarrierSpacing = 1;
|
||||||
|
ul_carrierBandwidth = 106;
|
||||||
|
pMax = 20;
|
||||||
|
#initialUplinkBWP
|
||||||
|
#genericParameters
|
||||||
|
initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384;
|
||||||
|
# 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 = 13;
|
||||||
|
preambleReceivedTargetPower = -100;
|
||||||
|
#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 = 5;
|
||||||
|
#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 = 4;
|
||||||
|
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||||
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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,
|
||||||
|
# pusch-ConfigCommon (up to 16 elements)
|
||||||
|
initialULBWPk2_0 = 2;
|
||||||
|
initialULBWPmappingType_0 = 1
|
||||||
|
# this is SS=0 L=11
|
||||||
|
initialULBWPstartSymbolAndLength_0 = 55;
|
||||||
|
|
||||||
|
initialULBWPk2_1 = 2;
|
||||||
|
initialULBWPmappingType_1 = 1;
|
||||||
|
# this is SS=0 L=12
|
||||||
|
initialULBWPstartSymbolAndLength_1 = 69;
|
||||||
|
|
||||||
|
initialULBWPk2_2 = 7;
|
||||||
|
initialULBWPmappingType_2 = 1;
|
||||||
|
# this is SS=10 L=4
|
||||||
|
initialULBWPstartSymbolAndLength_2 = 52;
|
||||||
|
|
||||||
|
msg3_DeltaPreamble = 1;
|
||||||
|
p0_NominalWithGrant =-90;
|
||||||
|
|
||||||
|
# pucch-ConfigCommon setup :
|
||||||
|
# pucchGroupHopping
|
||||||
|
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||||
|
pucchGroupHopping = 0;
|
||||||
|
hoppingId = 40;
|
||||||
|
p0_nominal = -90;
|
||||||
|
# ssb_PositionsInBurs_BitmapPR
|
||||||
|
# 1=short, 2=medium, 3=long
|
||||||
|
ssb_PositionsInBurst_PR = 2;
|
||||||
|
ssb_PositionsInBurst_Bitmap = 1; #0x80;
|
||||||
|
|
||||||
|
# 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 = 6;
|
||||||
|
nrofDownlinkSlots = 7; //8; //7;
|
||||||
|
nrofDownlinkSymbols = 6; //0; //6;
|
||||||
|
nrofUplinkSlots = 2;
|
||||||
|
nrofUplinkSymbols = 4; //0; //4;
|
||||||
|
|
||||||
|
ssPBCH_BlockPower = -25;
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
///X2
|
||||||
|
enable_x2 = "yes";
|
||||||
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
|
target_enb_x2_ip_address = (
|
||||||
|
{ ipv4 = "CI_FR1_CTL_ENB_IP_ADDR";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
|
||||||
|
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
|
GNB_IPV4_ADDRESS_FOR_S1_MME = "CI_GNB_IP_ADDR";
|
||||||
|
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||||
|
GNB_IPV4_ADDRESS_FOR_S1U = "CI_GNB_IP_ADDR";
|
||||||
|
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR";
|
||||||
|
GNB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
MACRLCs = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_s_preference = "local_L1";
|
||||||
|
tr_n_preference = "local_RRC";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "local_mac";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_rf = "yes"
|
||||||
|
nb_tx = 1
|
||||||
|
nb_rx = 1
|
||||||
|
att_tx = 0
|
||||||
|
att_rx = 0;
|
||||||
|
bands = [7];
|
||||||
|
max_pdschReferenceSignalPower = -27;
|
||||||
|
max_rxgain = 114;
|
||||||
|
eNB_instances = [0];
|
||||||
|
clock_src = "external";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
THREAD_STRUCT = (
|
||||||
|
{
|
||||||
|
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||||
|
parallel_config = "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";
|
||||||
|
};
|
||||||
|
|
||||||
+75
-53
@@ -113,12 +113,13 @@ class OaiCiTest():
|
|||||||
self.UEIPAddress = ''
|
self.UEIPAddress = ''
|
||||||
self.UEUserName = ''
|
self.UEUserName = ''
|
||||||
self.UEPassword = ''
|
self.UEPassword = ''
|
||||||
self.UE_instance = ''
|
self.UE_instance = 0
|
||||||
self.UESourceCodePath = ''
|
self.UESourceCodePath = ''
|
||||||
self.UELogFile = ''
|
self.UELogFile = ''
|
||||||
self.Build_OAI_UE_args = ''
|
self.Build_OAI_UE_args = ''
|
||||||
self.Initialize_OAI_UE_args = ''
|
self.Initialize_OAI_UE_args = ''
|
||||||
self.clean_repository = True
|
self.clean_repository = True
|
||||||
|
self.air_interface=''
|
||||||
self.expectedNbOfConnectedUEs = 0
|
self.expectedNbOfConnectedUEs = 0
|
||||||
|
|
||||||
def BuildOAIUE(self):
|
def BuildOAIUE(self):
|
||||||
@@ -128,10 +129,10 @@ class OaiCiTest():
|
|||||||
SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword)
|
SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword)
|
||||||
result = re.search('--nrUE', self.Build_OAI_UE_args)
|
result = re.search('--nrUE', self.Build_OAI_UE_args)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
RAN.air_interface='nr'
|
self.air_interface='nr-uesoftmodem'
|
||||||
ue_prefix = 'NR '
|
ue_prefix = 'NR '
|
||||||
else:
|
else:
|
||||||
RAN.air_interface='lte'
|
self.air_interface='lte-uesoftmodem'
|
||||||
ue_prefix = ''
|
ue_prefix = ''
|
||||||
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
|
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
@@ -171,7 +172,7 @@ class OaiCiTest():
|
|||||||
mismatch = True
|
mismatch = True
|
||||||
if not mismatch:
|
if not mismatch:
|
||||||
SSH.close()
|
SSH.close()
|
||||||
HTML.CreateHtmlTestRow(RAN.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(self.Build_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
return
|
return
|
||||||
|
|
||||||
SSH.command('echo ' + self.UEPassword + ' | sudo -S git clean -x -d -ff', '\$', 30)
|
SSH.command('echo ' + self.UEPassword + ' | sudo -S git clean -x -d -ff', '\$', 30)
|
||||||
@@ -197,7 +198,7 @@ class OaiCiTest():
|
|||||||
SSH.command('ls ran_build/build', '\$', 3)
|
SSH.command('ls ran_build/build', '\$', 3)
|
||||||
SSH.command('ls ran_build/build', '\$', 3)
|
SSH.command('ls ran_build/build', '\$', 3)
|
||||||
buildStatus = True
|
buildStatus = True
|
||||||
result = re.search(RAN.air_interface + '-uesoftmodem', SSH.getBefore())
|
result = re.search(self.air_interface, SSH.getBefore())
|
||||||
if result is None:
|
if result is None:
|
||||||
buildStatus = False
|
buildStatus = False
|
||||||
SSH.command('mkdir -p build_log_' + self.testCase_id, '\$', 5)
|
SSH.command('mkdir -p build_log_' + self.testCase_id, '\$', 5)
|
||||||
@@ -322,7 +323,7 @@ class OaiCiTest():
|
|||||||
if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '':
|
if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '':
|
||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
sys.exit('Insufficient Parameter')
|
sys.exit('Insufficient Parameter')
|
||||||
if RAN.air_interface == 'lte':
|
if self.air_interface == 'lte-uesoftmodem':
|
||||||
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
|
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
|
||||||
if result is None:
|
if result is None:
|
||||||
check_eNB = True
|
check_eNB = True
|
||||||
@@ -351,7 +352,7 @@ class OaiCiTest():
|
|||||||
# Initialize_OAI_UE_args usually start with -C and followed by the location in repository
|
# Initialize_OAI_UE_args usually start with -C and followed by the location in repository
|
||||||
SSH.command('source oaienv', '\$', 5)
|
SSH.command('source oaienv', '\$', 5)
|
||||||
SSH.command('cd cmake_targets/ran_build/build', '\$', 5)
|
SSH.command('cd cmake_targets/ran_build/build', '\$', 5)
|
||||||
if RAN.air_interface == 'lte':
|
if self.air_interface == 'lte-uesoftmodem':
|
||||||
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
|
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
|
||||||
# We may have to regenerate the .u* files
|
# We may have to regenerate the .u* files
|
||||||
if result is None:
|
if result is None:
|
||||||
@@ -373,7 +374,7 @@ class OaiCiTest():
|
|||||||
copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/reconfig.raw', '.')
|
copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/reconfig.raw', '.')
|
||||||
if (copyin_res == 0):
|
if (copyin_res == 0):
|
||||||
SSH.copyout(self.UEIPAddress, self.UEUserName, self.UEPassword, './reconfig.raw', self.UESourceCodePath + '/cmake_targets/ran_build/build')
|
SSH.copyout(self.UEIPAddress, self.UEUserName, self.UEPassword, './reconfig.raw', self.UESourceCodePath + '/cmake_targets/ran_build/build')
|
||||||
SSH.command('echo "ulimit -c unlimited && ./'+ RAN.air_interface +'-uesoftmodem ' + self.Initialize_OAI_UE_args + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
|
SSH.command('echo "ulimit -c unlimited && ./'+ self.air_interface +' ' + self.Initialize_OAI_UE_args + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
|
||||||
SSH.command('chmod 775 ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
|
SSH.command('chmod 775 ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
|
||||||
SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5)
|
SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5)
|
||||||
self.UELogFile = 'ue_' + self.testCase_id + '.log'
|
self.UELogFile = 'ue_' + self.testCase_id + '.log'
|
||||||
@@ -386,9 +387,7 @@ class OaiCiTest():
|
|||||||
while (doOutterLoop):
|
while (doOutterLoop):
|
||||||
SSH.command('cd ' + self.UESourceCodePath + '/cmake_targets/ran_build/build', '\$', 5)
|
SSH.command('cd ' + self.UESourceCodePath + '/cmake_targets/ran_build/build', '\$', 5)
|
||||||
SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5)
|
SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5)
|
||||||
#use nohup instead of daemon
|
SSH.command('echo $USER; nohup sudo -E ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh' + ' > ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ' + ' 2>&1 &', self.UEUserName, 5)
|
||||||
#SSH.command('echo ' + self.UEPassword + ' | sudo -S -E daemon --inherit --unsafe --name=ue' + str(self.UE_instance) + '_daemon --chdir=' + self.UESourceCodePath + '/cmake_targets/ran_build/build -o ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
|
|
||||||
SSH.command('echo $USER; nohup sudo ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh' + ' > ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ' + ' 2>&1 &', self.UEUserName, 5)
|
|
||||||
time.sleep(6)
|
time.sleep(6)
|
||||||
SSH.command('cd ../..', '\$', 5)
|
SSH.command('cd ../..', '\$', 5)
|
||||||
doLoop = True
|
doLoop = True
|
||||||
@@ -404,7 +403,7 @@ class OaiCiTest():
|
|||||||
doLoop = False
|
doLoop = False
|
||||||
continue
|
continue
|
||||||
SSH.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync"', '\$', 4)
|
SSH.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync"', '\$', 4)
|
||||||
if RAN.air_interface == 'nr':
|
if self.air_interface == 'nr-uesoftmodem':
|
||||||
result = re.search('Starting sync detection', SSH.getBefore())
|
result = re.search('Starting sync detection', SSH.getBefore())
|
||||||
else:
|
else:
|
||||||
result = re.search('got sync', SSH.getBefore())
|
result = re.search('got sync', SSH.getBefore())
|
||||||
@@ -429,7 +428,7 @@ class OaiCiTest():
|
|||||||
# That is the case for LTE
|
# That is the case for LTE
|
||||||
# In NR case, it's a positive message that will show if synchronization occurs
|
# In NR case, it's a positive message that will show if synchronization occurs
|
||||||
doLoop = True
|
doLoop = True
|
||||||
if RAN.air_interface == 'nr':
|
if self.air_interface == 'nr-uesoftmodem':
|
||||||
loopCounter = 10
|
loopCounter = 10
|
||||||
else:
|
else:
|
||||||
# We are now checking if sync w/ eNB DOES NOT OCCUR
|
# We are now checking if sync w/ eNB DOES NOT OCCUR
|
||||||
@@ -438,7 +437,7 @@ class OaiCiTest():
|
|||||||
while (doLoop):
|
while (doLoop):
|
||||||
loopCounter = loopCounter - 1
|
loopCounter = loopCounter - 1
|
||||||
if (loopCounter == 0):
|
if (loopCounter == 0):
|
||||||
if RAN.air_interface == 'nr':
|
if self.air_interface == 'nr-uesoftmodem':
|
||||||
# Here we do have great chances that UE did NOT cell-sync w/ gNB
|
# Here we do have great chances that UE did NOT cell-sync w/ gNB
|
||||||
doLoop = False
|
doLoop = False
|
||||||
fullSyncStatus = False
|
fullSyncStatus = False
|
||||||
@@ -457,7 +456,7 @@ class OaiCiTest():
|
|||||||
fullSyncStatus = True
|
fullSyncStatus = True
|
||||||
continue
|
continue
|
||||||
SSH.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync|Frequency"', '\$', 4)
|
SSH.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync|Frequency"', '\$', 4)
|
||||||
if RAN.air_interface == 'nr':
|
if self.air_interface == 'nr-uesoftmodem':
|
||||||
# Positive messaging -->
|
# Positive messaging -->
|
||||||
result = re.search('Measured Carrier Frequency', SSH.getBefore())
|
result = re.search('Measured Carrier Frequency', SSH.getBefore())
|
||||||
if result is not None:
|
if result is not None:
|
||||||
@@ -486,12 +485,12 @@ class OaiCiTest():
|
|||||||
|
|
||||||
if fullSyncStatus and gotSyncStatus:
|
if fullSyncStatus and gotSyncStatus:
|
||||||
doInterfaceCheck = False
|
doInterfaceCheck = False
|
||||||
if RAN.air_interface == 'lte':
|
if self.air_interface == 'lte-uesoftmodem':
|
||||||
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
|
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
|
||||||
if result is None:
|
if result is None:
|
||||||
doInterfaceCheck = True
|
doInterfaceCheck = True
|
||||||
# For the moment, only in explicit noS1 without kernel module (ie w/ tunnel interface)
|
# For the moment, only in explicit noS1 without kernel module (ie w/ tunnel interface)
|
||||||
if RAN.air_interface == 'nr':
|
if self.air_interface == 'nr-uesoftmodem':
|
||||||
result = re.search('--noS1 --nokrnmod 1', str(self.Initialize_OAI_UE_args))
|
result = re.search('--noS1 --nokrnmod 1', str(self.Initialize_OAI_UE_args))
|
||||||
if result is not None:
|
if result is not None:
|
||||||
doInterfaceCheck = True
|
doInterfaceCheck = True
|
||||||
@@ -531,7 +530,7 @@ class OaiCiTest():
|
|||||||
self.UEDevicesStatus = []
|
self.UEDevicesStatus = []
|
||||||
self.UEDevicesStatus.append(CONST.UE_STATUS_DETACHED)
|
self.UEDevicesStatus.append(CONST.UE_STATUS_DETACHED)
|
||||||
else:
|
else:
|
||||||
if RAN.air_interface == 'lte':
|
if self.air_interface == 'lte-uesoftmodem':
|
||||||
if RAN.eNBmbmsEnables[0]:
|
if RAN.eNBmbmsEnables[0]:
|
||||||
HTML.htmlUEFailureMsg='oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured'
|
HTML.htmlUEFailureMsg='oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured'
|
||||||
else:
|
else:
|
||||||
@@ -1086,7 +1085,10 @@ class OaiCiTest():
|
|||||||
sys.exit('Insufficient Parameter')
|
sys.exit('Insufficient Parameter')
|
||||||
SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
|
SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
|
||||||
if self.ADBCentralized:
|
if self.ADBCentralized:
|
||||||
SSH.command('adb devices', '\$', 15)
|
if self.ADBIPAddress == '192.168.18.196':
|
||||||
|
SSH.command('/home/oaici/remi/android-sdk-linux/platform-tools/adb devices', '\$', 15)
|
||||||
|
else:
|
||||||
|
SSH.command('adb devices', '\$', 15)
|
||||||
#self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore())
|
#self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore())
|
||||||
self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore())
|
self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore())
|
||||||
SSH.close()
|
SSH.close()
|
||||||
@@ -2414,8 +2416,8 @@ class OaiCiTest():
|
|||||||
def CheckOAIUEProcess(self, status_queue):
|
def CheckOAIUEProcess(self, status_queue):
|
||||||
try:
|
try:
|
||||||
SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword)
|
SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword)
|
||||||
SSH.command('stdbuf -o0 ps -aux | grep --color=never ' + RAN.air_interface + '-uesoftmodem | grep -v grep', '\$', 5)
|
SSH.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface + ' | grep -v grep', '\$', 5)
|
||||||
result = re.search(RAN.air_interface + '-uesoftmodem', SSH.getBefore())
|
result = re.search(self.air_interface, SSH.getBefore())
|
||||||
if result is None:
|
if result is None:
|
||||||
logging.debug('\u001B[1;37;41m OAI UE Process Not Found! \u001B[0m')
|
logging.debug('\u001B[1;37;41m OAI UE Process Not Found! \u001B[0m')
|
||||||
status_queue.put(CONST.OAI_UE_PROCESS_FAILED)
|
status_queue.put(CONST.OAI_UE_PROCESS_FAILED)
|
||||||
@@ -2772,7 +2774,7 @@ class OaiCiTest():
|
|||||||
logging.debug('\u001B[1m' + ueAction + ' Failed \u001B[0m')
|
logging.debug('\u001B[1m' + ueAction + ' Failed \u001B[0m')
|
||||||
HTML.htmlUEFailureMsg='<b>' + ueAction + ' Failed</b>\n' + HTML.htmlUEFailureMsg
|
HTML.htmlUEFailureMsg='<b>' + ueAction + ' Failed</b>\n' + HTML.htmlUEFailureMsg
|
||||||
HTML.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE')
|
HTML.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE')
|
||||||
if RAN.air_interface == 'lte':
|
if self.air_interface == 'lte-uesoftmodem':
|
||||||
# In case of sniffing on commercial eNBs we have random results
|
# In case of sniffing on commercial eNBs we have random results
|
||||||
# Not an error then
|
# Not an error then
|
||||||
if (logStatus != CONST.OAI_UE_PROCESS_COULD_NOT_SYNC) or (ueAction != 'Sniffing'):
|
if (logStatus != CONST.OAI_UE_PROCESS_COULD_NOT_SYNC) or (ueAction != 'Sniffing'):
|
||||||
@@ -2811,7 +2813,7 @@ class OaiCiTest():
|
|||||||
self.desc = 'Automatic Termination of eNB'
|
self.desc = 'Automatic Termination of eNB'
|
||||||
HTML.desc='Automatic Termination of eNB'
|
HTML.desc='Automatic Termination of eNB'
|
||||||
self.ShowTestID()
|
self.ShowTestID()
|
||||||
RAN.eNB_instance='0'
|
RAN.eNB_instance=0
|
||||||
RAN.TerminateeNB()
|
RAN.TerminateeNB()
|
||||||
if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted:
|
if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted:
|
||||||
self.testCase_id = 'AUTO-KILL-flexran-ctl'
|
self.testCase_id = 'AUTO-KILL-flexran-ctl'
|
||||||
@@ -3118,9 +3120,11 @@ def GetParametersFromXML(action):
|
|||||||
RAN.Build_eNB_forced_workspace_cleanup=True
|
RAN.Build_eNB_forced_workspace_cleanup=True
|
||||||
else:
|
else:
|
||||||
RAN.Build_eNB_forced_workspace_cleanup=False
|
RAN.Build_eNB_forced_workspace_cleanup=False
|
||||||
RAN.eNB_instance=test.findtext('eNB_instance')
|
eNB_instance=test.findtext('eNB_instance')
|
||||||
if (RAN.eNB_instance is None):
|
if (eNB_instance is None):
|
||||||
RAN.eNB_instance='0'
|
RAN.eNB_instance=0
|
||||||
|
else:
|
||||||
|
RAN.eNB_instance=int(eNB_instance)
|
||||||
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
||||||
if (RAN.eNB_serverId is None):
|
if (RAN.eNB_serverId is None):
|
||||||
RAN.eNB_serverId='0'
|
RAN.eNB_serverId='0'
|
||||||
@@ -3135,18 +3139,22 @@ def GetParametersFromXML(action):
|
|||||||
|
|
||||||
if action == 'WaitEndBuild_eNB':
|
if action == 'WaitEndBuild_eNB':
|
||||||
RAN.Build_eNB_args=test.findtext('Build_eNB_args')
|
RAN.Build_eNB_args=test.findtext('Build_eNB_args')
|
||||||
RAN.eNB_instance=test.findtext('eNB_instance')
|
eNB_instance=test.findtext('eNB_instance')
|
||||||
if (RAN.eNB_instance is None):
|
if (eNB_instance is None):
|
||||||
RAN.eNB_instance='0'
|
RAN.eNB_instance=0
|
||||||
|
else:
|
||||||
|
RAN.eNB_instance=int(eNB_instance)
|
||||||
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
||||||
if (RAN.eNB_serverId is None):
|
if (RAN.eNB_serverId is None):
|
||||||
RAN.eNB_serverId='0'
|
RAN.eNB_serverId='0'
|
||||||
|
|
||||||
if action == 'Initialize_eNB':
|
if action == 'Initialize_eNB':
|
||||||
RAN.Initialize_eNB_args=test.findtext('Initialize_eNB_args')
|
RAN.Initialize_eNB_args=test.findtext('Initialize_eNB_args')
|
||||||
RAN.eNB_instance=test.findtext('eNB_instance')
|
eNB_instance=test.findtext('eNB_instance')
|
||||||
if (RAN.eNB_instance is None):
|
if (eNB_instance is None):
|
||||||
RAN.eNB_instance='0'
|
RAN.eNB_instance=0
|
||||||
|
else:
|
||||||
|
RAN.eNB_instance=int(eNB_instance)
|
||||||
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
||||||
if (RAN.eNB_serverId is None):
|
if (RAN.eNB_serverId is None):
|
||||||
RAN.eNB_serverId='0'
|
RAN.eNB_serverId='0'
|
||||||
@@ -3154,17 +3162,18 @@ def GetParametersFromXML(action):
|
|||||||
#local variable air_interface
|
#local variable air_interface
|
||||||
air_interface = test.findtext('air_interface')
|
air_interface = test.findtext('air_interface')
|
||||||
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
||||||
CiTestObj.air_interface = 'lte-softmodem'
|
RAN.air_interface[RAN.eNB_instance] = 'lte-softmodem'
|
||||||
elif (air_interface.lower() in ['nr','lte']):
|
elif (air_interface.lower() in ['nr','lte']):
|
||||||
CiTestObj.air_interface = air_interface.lower() +'-softmodem'
|
RAN.air_interface[RAN.eNB_instance] = air_interface.lower() +'-softmodem'
|
||||||
else :
|
else :
|
||||||
CiTestObj.air_interface = 'ocp-enb'
|
RAN.air_interface[RAN.eNB_instance] = 'ocp-enb'
|
||||||
RAN.air_interface=CiTestObj.air_interface
|
|
||||||
|
|
||||||
if action == 'Terminate_eNB':
|
if action == 'Terminate_eNB':
|
||||||
RAN.eNB_instance=test.findtext('eNB_instance')
|
eNB_instance=test.findtext('eNB_instance')
|
||||||
if (RAN.eNB_instance is None):
|
if (eNB_instance is None):
|
||||||
RAN.eNB_instance='0'
|
RAN.eNB_instance=0
|
||||||
|
else:
|
||||||
|
RAN.eNB_instance=int(eNB_instance)
|
||||||
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
RAN.eNB_serverId=test.findtext('eNB_serverId')
|
||||||
if (RAN.eNB_serverId is None):
|
if (RAN.eNB_serverId is None):
|
||||||
RAN.eNB_serverId='0'
|
RAN.eNB_serverId='0'
|
||||||
@@ -3172,12 +3181,11 @@ def GetParametersFromXML(action):
|
|||||||
#local variable air_interface
|
#local variable air_interface
|
||||||
air_interface = test.findtext('air_interface')
|
air_interface = test.findtext('air_interface')
|
||||||
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
||||||
CiTestObj.air_interface = 'lte-softmodem'
|
RAN.air_interface[RAN.eNB_instance] = 'lte-softmodem'
|
||||||
elif (air_interface.lower() in ['nr','lte']):
|
elif (air_interface.lower() in ['nr','lte']):
|
||||||
CiTestObj.air_interface = air_interface.lower() +'-softmodem'
|
RAN.air_interface[RAN.eNB_instance] = air_interface.lower() +'-softmodem'
|
||||||
else :
|
else :
|
||||||
CiTestObj.air_interface = 'ocp-enb'
|
RAN.air_interface[RAN.eNB_instance] = 'ocp-enb'
|
||||||
RAN.air_interface=CiTestObj.air_interface
|
|
||||||
|
|
||||||
if action == 'Attach_UE':
|
if action == 'Attach_UE':
|
||||||
nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach')
|
nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach')
|
||||||
@@ -3203,24 +3211,38 @@ def GetParametersFromXML(action):
|
|||||||
|
|
||||||
if action == 'Initialize_OAI_UE':
|
if action == 'Initialize_OAI_UE':
|
||||||
CiTestObj.Initialize_OAI_UE_args = test.findtext('Initialize_OAI_UE_args')
|
CiTestObj.Initialize_OAI_UE_args = test.findtext('Initialize_OAI_UE_args')
|
||||||
CiTestObj.UE_instance = test.findtext('UE_instance')
|
UE_instance = test.findtext('UE_instance')
|
||||||
if (CiTestObj.UE_instance is None):
|
if (UE_instance is None):
|
||||||
CiTestObj.UE_instance = '0'
|
CiTestObj.UE_instance = 0
|
||||||
|
else:
|
||||||
|
CiTestObj.UE_instance = UE_instance
|
||||||
|
|
||||||
#local variable air_interface
|
#local variable air_interface
|
||||||
air_interface = test.findtext('air_interface')
|
air_interface = test.findtext('air_interface')
|
||||||
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
||||||
CiTestObj.air_interface = 'lte-softmodem'
|
CiTestObj.air_interface = 'lte-uesoftmodem'
|
||||||
elif (air_interface.lower() in ['nr','lte']):
|
elif (air_interface.lower() in ['nr','lte']):
|
||||||
CiTestObj.air_interface = air_interface.lower() +'-softmodem'
|
CiTestObj.air_interface = air_interface.lower() +'-uesoftmodem'
|
||||||
else :
|
else :
|
||||||
CiTestObj.air_interface = 'ocp-enb'
|
#CiTestObj.air_interface = 'ocp-enb'
|
||||||
RAN.air_interface=CiTestObj.air_interface
|
logging.error('OCP UE -- NOT SUPPORTED')
|
||||||
|
|
||||||
if action == 'Terminate_OAI_UE':
|
if action == 'Terminate_OAI_UE':
|
||||||
RAN.eNB_instance=test.findtext('UE_instance')
|
UE_instance=test.findtext('UE_instance')
|
||||||
if (CiTestObj.UE_instance is None):
|
if (UE_instance is None):
|
||||||
CiTestObj.UE_instance = '0'
|
CiTestObj.UE_instance = '0'
|
||||||
|
else:
|
||||||
|
CiTestObj.UE_instance = int(UE_instance)
|
||||||
|
|
||||||
|
#local variable air_interface
|
||||||
|
air_interface = test.findtext('air_interface')
|
||||||
|
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
|
||||||
|
CiTestObj.air_interface = 'lte-uesoftmodem'
|
||||||
|
elif (air_interface.lower() in ['nr','lte']):
|
||||||
|
CiTestObj.air_interface = air_interface.lower() +'-uesoftmodem'
|
||||||
|
else :
|
||||||
|
#CiTestObj.air_interface = 'ocp-enb'
|
||||||
|
logging.error('OCP UE -- NOT SUPPORTED')
|
||||||
|
|
||||||
if action == 'Ping' or action == 'Ping_CatM_module':
|
if action == 'Ping' or action == 'Ping_CatM_module':
|
||||||
CiTestObj.ping_args = test.findtext('ping_args')
|
CiTestObj.ping_args = test.findtext('ping_args')
|
||||||
@@ -3371,7 +3393,7 @@ if re.match('^TerminateeNB$', mode, re.IGNORECASE):
|
|||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
sys.exit('Insufficient Parameter')
|
sys.exit('Insufficient Parameter')
|
||||||
RAN.eNB_serverId='0'
|
RAN.eNB_serverId='0'
|
||||||
RAN.eNB_instance='0'
|
RAN.eNB_instance=0
|
||||||
RAN.eNBSourceCodePath='/tmp/'
|
RAN.eNBSourceCodePath='/tmp/'
|
||||||
RAN.TerminateeNB()
|
RAN.TerminateeNB()
|
||||||
elif re.match('^TerminateUE$', mode, re.IGNORECASE):
|
elif re.match('^TerminateUE$', mode, re.IGNORECASE):
|
||||||
|
|||||||
+29
-31
@@ -77,8 +77,8 @@ class RANManagement():
|
|||||||
self.backgroundBuildTestId = ['', '', '']
|
self.backgroundBuildTestId = ['', '', '']
|
||||||
self.Build_eNB_forced_workspace_cleanup = False
|
self.Build_eNB_forced_workspace_cleanup = False
|
||||||
self.Initialize_eNB_args = ''
|
self.Initialize_eNB_args = ''
|
||||||
self.air_interface = '' #changed from 'lte' to '' may lead to side effects in main
|
self.air_interface = ['', '', ''] #changed from 'lte' to '' may lead to side effects in main
|
||||||
self.eNB_instance = ''
|
self.eNB_instance = 0
|
||||||
self.eNB_serverId = ''
|
self.eNB_serverId = ''
|
||||||
self.eNBLogFiles = ['', '', '']
|
self.eNBLogFiles = ['', '', '']
|
||||||
self.eNBOptions = ['', '', '']
|
self.eNBOptions = ['', '', '']
|
||||||
@@ -125,13 +125,13 @@ class RANManagement():
|
|||||||
# Check if we build an 5G-NR gNB or an LTE eNB or an OCP eNB
|
# Check if we build an 5G-NR gNB or an LTE eNB or an OCP eNB
|
||||||
result = re.search('--eNBocp', self.Build_eNB_args)
|
result = re.search('--eNBocp', self.Build_eNB_args)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
self.air_interface='ocp-enb'
|
self.air_interface[self.eNB_instance] = 'ocp-enb'
|
||||||
else:
|
else:
|
||||||
result = re.search('--gNB', self.Build_eNB_args)
|
result = re.search('--gNB', self.Build_eNB_args)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
self.air_interface = 'nr-softmodem'
|
self.air_interface[self.eNB_instance] = 'nr-softmodem'
|
||||||
else:
|
else:
|
||||||
self.air_interface = 'lte-softmodem'
|
self.air_interface[self.eNB_instance] = 'lte-softmodem'
|
||||||
|
|
||||||
# Worakround for some servers, we need to erase completely the workspace
|
# Worakround for some servers, we need to erase completely the workspace
|
||||||
if self.Build_eNB_forced_workspace_cleanup:
|
if self.Build_eNB_forced_workspace_cleanup:
|
||||||
@@ -205,7 +205,8 @@ class RANManagement():
|
|||||||
if self.backgroundBuild:
|
if self.backgroundBuild:
|
||||||
mySSH.command('echo "./build_oai ' + self.Build_eNB_args + '" > ./my-lte-softmodem-build.sh', '\$', 5)
|
mySSH.command('echo "./build_oai ' + self.Build_eNB_args + '" > ./my-lte-softmodem-build.sh', '\$', 5)
|
||||||
mySSH.command('chmod 775 ./my-lte-softmodem-build.sh', '\$', 5)
|
mySSH.command('chmod 775 ./my-lte-softmodem-build.sh', '\$', 5)
|
||||||
mySSH.command('echo ' + lPassWord + ' | sudo -S -E daemon --inherit --unsafe --name=build_enb_daemon --chdir=' + lSourcePath + '/cmake_targets -o ' + lSourcePath + '/cmake_targets/compile_oai_enb.log ./my-lte-softmodem-build.sh', '\$', 5)
|
mySSH.command('echo ' + lPassWord + ' | sudo -S ls', '\$', 5)
|
||||||
|
mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-build.sh' + ' > ' + lSourcePath + '/cmake_targets/compile_oai_enb.log ' + ' 2>&1 &', lUserName, 5)
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
if self.htmlObj is not None:
|
if self.htmlObj is not None:
|
||||||
self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK)
|
self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
@@ -261,7 +262,7 @@ class RANManagement():
|
|||||||
|
|
||||||
#check if we have the build corresponding to the air interface keywords (nr-softmode, lte-softmodem, ocp-enb)
|
#check if we have the build corresponding to the air interface keywords (nr-softmode, lte-softmodem, ocp-enb)
|
||||||
logging.info('CHECK Build with IP='+lIpAddr+' SourcePath='+lSourcePath)
|
logging.info('CHECK Build with IP='+lIpAddr+' SourcePath='+lSourcePath)
|
||||||
result = re.search(self.air_interface, mySSH.getBefore())
|
result = re.search(self.air_interface[self.eNB_instance], mySSH.getBefore())
|
||||||
if result is None:
|
if result is None:
|
||||||
buildStatus = False #if not, build failed
|
buildStatus = False #if not, build failed
|
||||||
else:
|
else:
|
||||||
@@ -304,11 +305,11 @@ class RANManagement():
|
|||||||
|
|
||||||
#generate logging info depending on buildStatus and air interface
|
#generate logging info depending on buildStatus and air interface
|
||||||
if buildStatus:
|
if buildStatus:
|
||||||
logging.info('\u001B[1m Building OAI ' + self.air_interface + ' Pass\u001B[0m')
|
logging.info('\u001B[1m Building OAI ' + self.air_interface[self.eNB_instance] + ' Pass\u001B[0m')
|
||||||
if self.htmlObj is not None:
|
if self.htmlObj is not None:
|
||||||
self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK)
|
self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
else:
|
else:
|
||||||
logging.error('\u001B[1m Building OAI ' + self.air_interface + ' Failed\u001B[0m')
|
logging.error('\u001B[1m Building OAI ' + self.air_interface[self.eNB_instance] + ' Failed\u001B[0m')
|
||||||
if self.htmlObj is not None:
|
if self.htmlObj is not None:
|
||||||
self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'KO', CONST.ALL_PROCESSES_OK)
|
self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
self.htmlObj.CreateHtmlTabFooter(False)
|
self.htmlObj.CreateHtmlTabFooter(False)
|
||||||
@@ -348,9 +349,9 @@ class RANManagement():
|
|||||||
# If tracer options is on, running tshark on EPC side and capture traffic b/ EPC and eNB
|
# If tracer options is on, running tshark on EPC side and capture traffic b/ EPC and eNB
|
||||||
result = re.search('T_stdout', str(self.Initialize_eNB_args))
|
result = re.search('T_stdout', str(self.Initialize_eNB_args))
|
||||||
if (result is not None) and (self.epcObj is not None):
|
if (result is not None) and (self.epcObj is not None):
|
||||||
localEpcIpAddr = self.epcObj.GetIPAddress()
|
localEpcIpAddr = self.epcObj.IPAddress
|
||||||
localEpcUserName = self.epcObj.GetUserName()
|
localEpcUserName = self.epcObj.UserName
|
||||||
localEpcPassword = self.epcObj.GetPassword()
|
localEpcPassword = self.epcObj.Password
|
||||||
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
|
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
|
||||||
mySSH.command('ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"', '\$', 5)
|
mySSH.command('ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"', '\$', 5)
|
||||||
result = re.search('interfaceToUse=(?P<eth_interface>[a-zA-Z0-9\-\_]+)done', mySSH.getBefore())
|
result = re.search('interfaceToUse=(?P<eth_interface>[a-zA-Z0-9\-\_]+)done', mySSH.getBefore())
|
||||||
@@ -402,9 +403,11 @@ class RANManagement():
|
|||||||
localMmeIpAddr = self.epcObj.MmeIPAddress
|
localMmeIpAddr = self.epcObj.MmeIPAddress
|
||||||
mySSH.command('sed -i -e \'s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/\' ' + ci_full_config_file, '\$', 2);
|
mySSH.command('sed -i -e \'s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
mySSH.command('sed -i -e \'s/CI_ENB_IP_ADDR/' + lIpAddr + '/\' ' + ci_full_config_file, '\$', 2);
|
mySSH.command('sed -i -e \'s/CI_ENB_IP_ADDR/' + lIpAddr + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
|
mySSH.command('sed -i -e \'s/CI_GNB_IP_ADDR/' + lIpAddr + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
mySSH.command('sed -i -e \'s/CI_RCC_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
mySSH.command('sed -i -e \'s/CI_RCC_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
mySSH.command('sed -i -e \'s/CI_RRU1_IP_ADDR/' + self.eNB1IPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
mySSH.command('sed -i -e \'s/CI_RRU1_IP_ADDR/' + self.eNB1IPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
mySSH.command('sed -i -e \'s/CI_RRU2_IP_ADDR/' + self.eNB2IPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
mySSH.command('sed -i -e \'s/CI_RRU2_IP_ADDR/' + self.eNB2IPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
|
mySSH.command('sed -i -e \'s/CI_FR1_CTL_ENB_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2);
|
||||||
if self.flexranCtrlInstalled and self.flexranCtrlStarted:
|
if self.flexranCtrlInstalled and self.flexranCtrlStarted:
|
||||||
mySSH.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "yes";/\' ' + ci_full_config_file, '\$', 2);
|
mySSH.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "yes";/\' ' + ci_full_config_file, '\$', 2);
|
||||||
else:
|
else:
|
||||||
@@ -426,15 +429,11 @@ class RANManagement():
|
|||||||
if self.air_interface == 'nr':
|
if self.air_interface == 'nr':
|
||||||
mySSH.command('if [ -e rbconfig.raw ]; then echo ' + lPassWord + ' | sudo -S rm rbconfig.raw; fi', '\$', 5)
|
mySSH.command('if [ -e rbconfig.raw ]; then echo ' + lPassWord + ' | sudo -S rm rbconfig.raw; fi', '\$', 5)
|
||||||
mySSH.command('if [ -e reconfig.raw ]; then echo ' + lPassWord + ' | sudo -S rm reconfig.raw; fi', '\$', 5)
|
mySSH.command('if [ -e reconfig.raw ]; then echo ' + lPassWord + ' | sudo -S rm reconfig.raw; fi', '\$', 5)
|
||||||
mySSH.command('echo "ulimit -c unlimited && ./ran_build/build/' + self.air_interface + '-softmodem -O ' + lSourcePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
|
# NOTE: WE SHALL do a check if the executable is present (in case build went wrong)
|
||||||
|
mySSH.command('echo "ulimit -c unlimited && ./ran_build/build/' + self.air_interface[self.eNB_instance] + ' -O ' + lSourcePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
|
||||||
mySSH.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
|
mySSH.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
|
||||||
mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5)
|
mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5)
|
||||||
mySSH.command('hostnamectl','\$', 5)
|
mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10)
|
||||||
result = re.search('CentOS Linux 7', mySSH.getBefore())
|
|
||||||
if result is not None:
|
|
||||||
mySSH.command('echo $USER; nohup sudo ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10)
|
|
||||||
else:
|
|
||||||
mySSH.command('echo ' + lPassWord + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + lSourcePath + '/cmake_targets -o ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
|
|
||||||
self.eNBLogFiles[int(self.eNB_instance)] = 'enb_' + self.testCase_id + '.log'
|
self.eNBLogFiles[int(self.eNB_instance)] = 'enb_' + self.testCase_id + '.log'
|
||||||
if extra_options != '':
|
if extra_options != '':
|
||||||
self.eNBOptions[int(self.eNB_instance)] = extra_options
|
self.eNBOptions[int(self.eNB_instance)] = extra_options
|
||||||
@@ -457,9 +456,9 @@ class RANManagement():
|
|||||||
# In case of T tracer recording, we need to kill tshark on EPC side
|
# In case of T tracer recording, we need to kill tshark on EPC side
|
||||||
result = re.search('T_stdout', str(self.Initialize_eNB_args))
|
result = re.search('T_stdout', str(self.Initialize_eNB_args))
|
||||||
if (result is not None) and (self.epcObj is not None):
|
if (result is not None) and (self.epcObj is not None):
|
||||||
localEpcIpAddr = self.epcObj.GetIPAddress()
|
localEpcIpAddr = self.epcObj.IPAddress
|
||||||
localEpcUserName = self.epcObj.GetUserName()
|
localEpcUserName = self.epcObj.UserName
|
||||||
localEpcPassword = self.epcObj.GetPassword()
|
localEpcPassword = self.epcObj.Password
|
||||||
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
|
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
|
||||||
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
|
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
|
||||||
mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
|
mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
|
||||||
@@ -535,8 +534,8 @@ class RANManagement():
|
|||||||
lPassWord = self.eNBPassword
|
lPassWord = self.eNBPassword
|
||||||
mySSH = SSH.SSHConnection()
|
mySSH = SSH.SSHConnection()
|
||||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||||
mySSH.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface + ' | grep -v grep', '\$', 5)
|
mySSH.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface[self.eNB_instance] + ' | grep -v grep', '\$', 5)
|
||||||
result = re.search(self.air_interface, mySSH.getBefore())
|
result = re.search(self.air_interface[self.eNB_instance], mySSH.getBefore())
|
||||||
if result is None:
|
if result is None:
|
||||||
logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m')
|
logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m')
|
||||||
status_queue.put(CONST.ENB_PROCESS_FAILED)
|
status_queue.put(CONST.ENB_PROCESS_FAILED)
|
||||||
@@ -568,14 +567,13 @@ class RANManagement():
|
|||||||
mySSH = SSH.SSHConnection()
|
mySSH = SSH.SSHConnection()
|
||||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||||
mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5)
|
mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5)
|
||||||
if (self.air_interface == 'lte-softmodem') or (self.air_interface == 'ocp-enb'):
|
if (self.air_interface[self.eNB_instance] == 'lte-softmodem') or (self.air_interface[self.eNB_instance] == 'ocp-enb'):
|
||||||
nodeB_prefix = 'e'
|
nodeB_prefix = 'e'
|
||||||
else:
|
else:
|
||||||
nodeB_prefix = 'g'
|
nodeB_prefix = 'g'
|
||||||
mySSH.command('stdbuf -o0 ps -aux | grep --color=never -e softmodem -e ocp-enb | grep -v grep', '\$', 5)
|
mySSH.command('stdbuf -o0 ps -aux | grep --color=never -e softmodem -e ocp-enb | grep -v grep', '\$', 5)
|
||||||
result = re.search('(-softmodem|ocp)', mySSH.getBefore())
|
result = re.search('(-softmodem|ocp)', mySSH.getBefore())
|
||||||
if result is not None:
|
if result is not None:
|
||||||
mySSH.command('echo ' + lPassWord + ' | sudo -S daemon --name=enb' + str(self.eNB_instance) + '_daemon --stop', '\$', 5)
|
|
||||||
mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGINT -r .*-softmodem ocp-enb || true', '\$', 5)
|
mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGINT -r .*-softmodem ocp-enb || true', '\$', 5)
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
mySSH.command('stdbuf -o0 ps -aux | grep --color=never -e softmodem -e ocp-enb | grep -v grep', '\$', 5)
|
mySSH.command('stdbuf -o0 ps -aux | grep --color=never -e softmodem -e ocp-enb | grep -v grep', '\$', 5)
|
||||||
@@ -588,9 +586,9 @@ class RANManagement():
|
|||||||
# If tracer options is on, stopping tshark on EPC side
|
# If tracer options is on, stopping tshark on EPC side
|
||||||
result = re.search('T_stdout', str(self.Initialize_eNB_args))
|
result = re.search('T_stdout', str(self.Initialize_eNB_args))
|
||||||
if (result is not None) and (self.epcObj is not None):
|
if (result is not None) and (self.epcObj is not None):
|
||||||
localEpcIpAddr = self.epcObj.GetIPAddress()
|
localEpcIpAddr = self.epcObj.IPAddress
|
||||||
localEpcUserName = self.epcObj.GetUserName()
|
localEpcUserName = self.epcObj.UserName
|
||||||
localEpcPassword = self.epcObj.GetPassword()
|
localEpcPassword = self.epcObj.Password
|
||||||
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
|
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
|
||||||
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
|
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
|
||||||
mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
|
mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
|
||||||
@@ -831,11 +829,11 @@ class RANManagement():
|
|||||||
mbmsRequestMsg += 1
|
mbmsRequestMsg += 1
|
||||||
enb_log_file.close()
|
enb_log_file.close()
|
||||||
logging.debug(' File analysis completed')
|
logging.debug(' File analysis completed')
|
||||||
if (self.air_interface == 'lte-softmodem') or (self.air_interface == 'ocp-enb'):
|
if (self.air_interface[self.eNB_instance] == 'lte-softmodem') or (self.air_interface[self.eNB_instance] == 'ocp-enb'):
|
||||||
nodeB_prefix = 'e'
|
nodeB_prefix = 'e'
|
||||||
else:
|
else:
|
||||||
nodeB_prefix = 'g'
|
nodeB_prefix = 'g'
|
||||||
if self.air_interface == 'nr-softmodem':
|
if self.air_interface[self.eNB_instance] == 'nr-softmodem':
|
||||||
if ulschReceiveOK > 0:
|
if ulschReceiveOK > 0:
|
||||||
statMsg = nodeB_prefix + 'NB showed ' + str(ulschReceiveOK) + ' "ULSCH received ok" message(s)'
|
statMsg = nodeB_prefix + 'NB showed ' + str(ulschReceiveOK) + ' "ULSCH received ok" message(s)'
|
||||||
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
||||||
|
|||||||
@@ -33,27 +33,29 @@
|
|||||||
<testCase id="000001">
|
<testCase id="000001">
|
||||||
<class>Build_eNB</class>
|
<class>Build_eNB</class>
|
||||||
<desc>Build eNB</desc>
|
<desc>Build eNB</desc>
|
||||||
<Build_eNB_args>-w USRP -c --eNB</Build_eNB_args>
|
<Build_eNB_args>-w USRP -c --eNB --ninja</Build_eNB_args>
|
||||||
<eNB_instance>0</eNB_instance>
|
<eNB_instance>0</eNB_instance>
|
||||||
<eNB_serverId>0</eNB_serverId>
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<backgroundBuild>True</backgroundBuild>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="000002">
|
<testCase id="000004">
|
||||||
<class>WaitEndBuild_eNB</class>
|
<class>WaitEndBuild_eNB</class>
|
||||||
<desc>Wait for end of Build eNB</desc>
|
<desc>Wait for end of Build eNB</desc>
|
||||||
<eNB_instance>0</eNB_instance>
|
<eNB_instance>0</eNB_instance>
|
||||||
<eNB_serverId>0</eNB_serverId>
|
<eNB_serverId>0</eNB_serverId>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="000003">
|
<testCase id="000002">
|
||||||
<class>Build_eNB</class>
|
<class>Build_eNB</class>
|
||||||
<desc>Build gNB</desc>
|
<desc>Build gNB</desc>
|
||||||
<Build_eNB_args>-w USRP -c --gNB</Build_eNB_args>
|
<Build_eNB_args>-w USRP -c --gNB --ninja</Build_eNB_args>
|
||||||
<eNB_instance>1</eNB_instance>
|
<eNB_instance>1</eNB_instance>
|
||||||
<eNB_serverId>1</eNB_serverId>
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
<backgroundBuild>True</backgroundBuild>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="000004">
|
<testCase id="000003">
|
||||||
<class>WaitEndBuild_eNB</class>
|
<class>WaitEndBuild_eNB</class>
|
||||||
<desc>Wait for end of Build gNB</desc>
|
<desc>Wait for end of Build gNB</desc>
|
||||||
<eNB_instance>1</eNB_instance>
|
<eNB_instance>1</eNB_instance>
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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-fr1-tm1</htmlTabRef>
|
||||||
|
<htmlTabName>Test-FR1-TM1</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<repeatCount>1</repeatCount>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
030000
|
||||||
|
040000
|
||||||
|
000001
|
||||||
|
070000
|
||||||
|
070001
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList>
|
||||||
|
</TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="030000">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize eNB</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf</Initialize_eNB_args>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<air_interface>lte</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="040000">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize gNB</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf</Initialize_eNB_args>
|
||||||
|
<eNB_instance>1</eNB_instance>
|
||||||
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
<air_interface>nr</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000001">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>30</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="070000">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate eNB</desc>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="070001">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate eNB</desc>
|
||||||
|
<eNB_instance>1</eNB_instance>
|
||||||
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
<mode>TesteNB</mode>
|
<mode>TesteNB</mode>
|
||||||
<class>Build_eNB</class>
|
<class>Build_eNB</class>
|
||||||
<desc>Build gNB (USRP)</desc>
|
<desc>Build gNB (USRP)</desc>
|
||||||
<Build_eNB_args>--gNB -w USRP</Build_eNB_args>
|
<Build_eNB_args>--gNB -w USRP --ninja</Build_eNB_args>
|
||||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<mode>TestUE</mode>
|
<mode>TestUE</mode>
|
||||||
<class>Build_OAI_UE</class>
|
<class>Build_OAI_UE</class>
|
||||||
<desc>Build NR UE (USRP)</desc>
|
<desc>Build NR UE (USRP)</desc>
|
||||||
<Build_OAI_UE_args>--nrUE -w USRP</Build_OAI_UE_args>
|
<Build_OAI_UE_args>--nrUE -w USRP --ninja</Build_OAI_UE_args>
|
||||||
<clean_repository>false</clean_repository>
|
<clean_repository>false</clean_repository>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
STATUS 2020/06/26 : information is up to date, but under continuous improvement
|
STATUS 2020/07/30 : under continuous improvement ; updated the configuration files links with CI approved reference files
|
||||||
|
|
||||||
|
|
||||||
## Table of Contents ##
|
## Table of Contents ##
|
||||||
|
|
||||||
@@ -78,17 +79,17 @@ https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/do
|
|||||||
Each component (EPC, eNB, gNB) has its own configuration file.
|
Each component (EPC, eNB, gNB) has its own configuration file.
|
||||||
These config files are passed as arguments of the run command line, using the option -O \<conf file\>
|
These config files are passed as arguments of the run command line, using the option -O \<conf file\>
|
||||||
|
|
||||||
Some config examples can be found in the following folder:
|
The **REFERENCE** files for eNB and gNB, **used by the CI**, can be found here:
|
||||||
https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/targets/PROJECTS/GENERIC-LTE-EPC/CONF
|
[enb conf file](../ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf)
|
||||||
|
[gnb conf file](../ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf)
|
||||||
Also base config files can be found here:
|
|
||||||
[enb conf file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/enb.conf)
|
|
||||||
[gnb conf file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/gnb.conf)
|
|
||||||
|
|
||||||
TO DO : attach base confif files
|
|
||||||
|
|
||||||
These files have to be updated manually to set the IP addresses and frequency.
|
These files have to be updated manually to set the IP addresses and frequency.
|
||||||
|
|
||||||
|
|
||||||
|
**ATTENTION** : an **EXTERNAL** clock is used to sync the eNB and gNB,
|
||||||
|
whether the clock is internal or external is defined in the configuration files (!! details needed !!)
|
||||||
|
|
||||||
|
|
||||||
1- In the **eNB configuration file** :
|
1- In the **eNB configuration file** :
|
||||||
- look for MME IP address, and update the **ipv4 field** with the IP address of the **EPC** server
|
- look for MME IP address, and update the **ipv4 field** with the IP address of the **EPC** server
|
||||||
```
|
```
|
||||||
@@ -128,7 +129,7 @@ These files have to be updated manually to set the IP addresses and frequency.
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
- look for X2 IP address, and update the **4 fields** with the IP address of the **eNB** server (notice : even if -in principle- S1 MME is not required for gNB setting)
|
- look for X2 IP address, and update the **4 fields** with the IP address of the **eNB** server / **gNB** server as below (notice : even if -in principle- S1 MME is not required for gNB setting)
|
||||||
```
|
```
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
@@ -146,11 +147,11 @@ These files have to be updated manually to set the IP addresses and frequency.
|
|||||||
{
|
{
|
||||||
|
|
||||||
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
GNB_IPV4_ADDRESS_FOR_S1_MME = "**YOUR_ENB_IP_ADDR**";
|
GNB_IPV4_ADDRESS_FOR_S1_MME = "**YOUR_GNB_IP_ADDR**";
|
||||||
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||||
GNB_IPV4_ADDRESS_FOR_S1U = "**YOUR_ENB_IP_ADDR**";
|
GNB_IPV4_ADDRESS_FOR_S1U = "**YOUR_GNB_IP_ADDR**";
|
||||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
GNB_IPV4_ADDRESS_FOR_X2C = "**YOUR_ENB_IP_ADDR**";
|
GNB_IPV4_ADDRESS_FOR_X2C = "**YOUR_GNB_IP_ADDR**";
|
||||||
GNB_PORT_FOR_X2C = 36422; # Spec 36422
|
GNB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user