* Update the relay node (RN) procedure when multicast relaying is enabled
* Fix the non-continous indexing of the PDCP array (replace rb_id by lc_id) * Add a new test case 03 for Rel10 and eMBMS git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4149 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
+20
-22
@@ -201,7 +201,7 @@ help (void) {
|
||||
printf (" - wireshark: Enable tracing of layers above PHY using an UDP socket\n");
|
||||
printf (" - pcap: Enable tracing of layers above PHY to a pcap file\n");
|
||||
printf (" - tshark: Not implemented yet\n");
|
||||
printf ("-Q Activate and set the MBMS service: 0 : not used (default eMBMS disabled), 1: eMBMS and RRC enabled, 2: eMBMS relaying and RRC enabled, 3: eMBMS enabled, RRC disabled, 4: eMBMS relaying enabled, RRC disabled\n");
|
||||
printf ("-Q Activate and set the MBMS service: 0 : not used (default eMBMS disabled), 1: eMBMS and RRC Connection enabled, 2: eMBMS relaying and RRC Connection enabled, 3: eMBMS enabled, RRC Connection disabled, 4: eMBMS relaying enabled, RRC Connection disabled\n");
|
||||
printf ("-R [6,15,25,50,75,100] Sets N_RB_DL\n");
|
||||
printf ("-r Activates rate adaptation (DL for now)\n");
|
||||
printf ("-s snr_dB set a fixed (average) SNR, this deactivates the openair channel model generator (OCM)\n");
|
||||
@@ -368,7 +368,7 @@ int
|
||||
|
||||
s32 UE_id=0, eNB_id=0, RN_id=0;
|
||||
|
||||
relaying_mode_t r_mode=no_relay; // no relaying
|
||||
relaying_type_t r_type=no_relay; // no relaying
|
||||
// time calibration for soft realtime mode
|
||||
|
||||
lte_subframe_t direction;
|
||||
@@ -631,7 +631,6 @@ int
|
||||
|
||||
direction = subframe_select(frame_parms,next_slot>>1);
|
||||
|
||||
r_mode = no_relay;
|
||||
#ifdef PROC
|
||||
if(Channel_Flag==1)
|
||||
Channel_Func(s_re2,s_im2,r_re2,r_im2,r_re02,r_im02,r_re0_d,r_im0_d,r_re0_u,r_im0_u,eNB2UE,UE2eNB,enb_data,ue_data,abstraction_flag,frame_parms,slot);
|
||||
@@ -647,8 +646,8 @@ int
|
||||
eNB_id++) {
|
||||
//printf ("debug: Nid_cell %d\n", PHY_vars_eNB_g[eNB_id]->lte_frame_parms.Nid_cell);
|
||||
//printf ("debug: frame_type %d,tdd_config %d\n", PHY_vars_eNB_g[eNB_id]->lte_frame_parms.frame_type,PHY_vars_eNB_g[eNB_id]->lte_frame_parms.tdd_config);
|
||||
LOG_D(EMU,"PHY procedures eNB %d mode %s for frame %d, slot %d (subframe TX %d, RX %d) TDD %d/%d Nid_cell %d\n",
|
||||
eNB_id, (r_mode == 0)?"Normal":"Relaying", frame, slot, next_slot >> 1,last_slot>>1,
|
||||
LOG_D(EMU,"PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d) TDD %d/%d Nid_cell %d\n",
|
||||
eNB_id, frame, slot, next_slot >> 1,last_slot>>1,
|
||||
PHY_vars_eNB_g[eNB_id]->lte_frame_parms.frame_type,
|
||||
PHY_vars_eNB_g[eNB_id]->lte_frame_parms.tdd_config,PHY_vars_eNB_g[eNB_id]->lte_frame_parms.Nid_cell);
|
||||
|
||||
@@ -659,7 +658,7 @@ int
|
||||
pdcp_run(frame, 1, 0, eNB_id);//PHY_vars_eNB_g[eNB_id]->Mod_id
|
||||
|
||||
// PHY_vars_eNB_g[eNB_id]->frame = frame;
|
||||
phy_procedures_eNB_lte (last_slot, next_slot, PHY_vars_eNB_g[eNB_id], abstraction_flag, r_mode);
|
||||
phy_procedures_eNB_lte (last_slot, next_slot, PHY_vars_eNB_g[eNB_id], abstraction_flag, no_relay);
|
||||
|
||||
#ifdef PRINT_STATS
|
||||
if(last_slot==9 && frame%10==0)
|
||||
@@ -692,8 +691,8 @@ int
|
||||
UE_id++){
|
||||
if (frame >= (UE_id * 20)) { // activate UE only after 20*UE_id frames so that different UEs turn on separately
|
||||
|
||||
LOG_D(EMU,"PHY procedures UE %d mode %s for frame %d, slot %d (subframe TX %d, RX %d)\n",
|
||||
UE_id, (r_mode == 0)?"Normal":"Relaying", frame, slot, next_slot >> 1,last_slot>>1);
|
||||
LOG_D(EMU,"PHY procedures UE %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
|
||||
UE_id, frame, slot, next_slot >> 1,last_slot>>1);
|
||||
|
||||
if (PHY_vars_UE_g[UE_id]->UE_mode[0] != NOT_SYNCHED) {
|
||||
if (frame>0) {
|
||||
@@ -705,7 +704,7 @@ int
|
||||
//Access layer
|
||||
pdcp_run(frame, 0, UE_id, 0);
|
||||
|
||||
phy_procedures_UE_lte (last_slot, next_slot, PHY_vars_UE_g[UE_id], 0, abstraction_flag,normal_txrx, r_mode);
|
||||
phy_procedures_UE_lte (last_slot, next_slot, PHY_vars_UE_g[UE_id], 0, abstraction_flag,normal_txrx, no_relay);
|
||||
ue_data[UE_id]->tx_power_dBm = PHY_vars_UE_g[UE_id]->tx_power_dBm;
|
||||
}
|
||||
}
|
||||
@@ -754,34 +753,33 @@ int
|
||||
eNB_id= oai_emulation.info.first_enb_local+oai_emulation.info.nb_enb_local + RN_id; // NB_eNB_INST + RN_id
|
||||
// currently only works in FDD
|
||||
if (oai_emulation.info.eMBMS_active_state == 4){
|
||||
r_mode = multicast_relay;
|
||||
LOG_I(EMU,"Activating the multicast relaying\n");
|
||||
r_type = multicast_relay;
|
||||
//LOG_I(EMU,"Activating the multicast relaying\n");
|
||||
}else {
|
||||
LOG_E(EMU,"Not supported option when relaying is enabled %d\n", r_mode);
|
||||
LOG_E(EMU,"Not supported eMBMS option when relaying is enabled %d\n", r_type);
|
||||
exit(-1);
|
||||
}
|
||||
if ( oai_emulation.info.frame_type == 0) {
|
||||
// RN == UE, do RX as in UE for SF0-SF5
|
||||
// we could add another arg, such as operation, to call the top func phy_procedures_UE_lte
|
||||
// RN == UE
|
||||
if (frame>0) {
|
||||
if (PHY_vars_UE_g[UE_id]->UE_mode[0] != NOT_SYNCHED) {
|
||||
LOG_D(EMU,"PHY procedures UE %d mode %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
|
||||
UE_id, (r_mode == 0)?"Normal":"Relaying", frame, slot, next_slot >> 1,last_slot>>1);
|
||||
LOG_D(EMU,"[RN %d] PHY procedures UE %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
|
||||
RN_id, UE_id, frame, slot, next_slot >> 1,last_slot>>1);
|
||||
PHY_vars_UE_g[UE_id]->frame = frame;
|
||||
phy_procedures_UE_lte (last_slot, next_slot, PHY_vars_UE_g[UE_id], 0, abstraction_flag,normal_txrx, r_mode);
|
||||
phy_procedures_UE_lte (last_slot, next_slot, PHY_vars_UE_g[UE_id], 0, abstraction_flag,normal_txrx, r_type);
|
||||
} else if (last_slot == (LTE_SLOTS_PER_FRAME-2)) {
|
||||
initial_sync(PHY_vars_UE_g[UE_id],normal_txrx);
|
||||
}
|
||||
}
|
||||
|
||||
// RN == eNB, do Tx as in eNB for SF6-SF9
|
||||
LOG_D(EMU,"PHY procedures eNB %d mode %s for frame %d, slot %d (subframe TX %d, RX %d)\n",
|
||||
eNB_id, (r_mode == 0)?"Normal":"Relaying", frame, slot, next_slot >> 1,last_slot>>1);
|
||||
phy_procedures_eNB_lte (last_slot, next_slot, PHY_vars_eNB_g[eNB_id], abstraction_flag, r_mode);
|
||||
// RN == eNB
|
||||
LOG_D(EMU,"[RN %d] PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
|
||||
RN_id, eNB_id, frame, slot, next_slot >> 1,last_slot>>1);
|
||||
phy_procedures_eNB_lte (last_slot, next_slot, PHY_vars_eNB_g[eNB_id], abstraction_flag, r_type);
|
||||
|
||||
}
|
||||
else{
|
||||
LOG_E(EMU,"TDD is not supported for multicast relaying %d\n", r_mode);
|
||||
LOG_E(EMU,"TDD is not supported for multicast relaying %d\n", r_type);
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
break;
|
||||
case 'Q':
|
||||
//eMBMS_active=1;
|
||||
// 0 : not used (default), 1: eMBMS and RRC enabled, 2: eMBMS relaying and RRC enabled, 3: eMBMS enabled, RRC disabled, 3: eMBMS relaying enabled, RRC disabled
|
||||
// 0 : not used (default), 1: eMBMS and RRC enabled, 2: eMBMS relaying and RRC enabled, 3: eMBMS enabled, RRC disabled, 4: eMBMS relaying enabled, RRC disabled
|
||||
oai_emulation.info.eMBMS_active_state = atoi (optarg);
|
||||
break;
|
||||
case 'R':
|
||||
|
||||
+14
-3
@@ -10,15 +10,26 @@ Obj.# Case# Test# Description
|
||||
01 01 04 Build dlsim Rel8
|
||||
01 01 05 Build ulsim Rel8
|
||||
01 01 06 Build oaisim Rel10
|
||||
01 01 07 Build oaisim Rel8 with cellular RRC for eNB
|
||||
01 01 08 Build oaisim Rel8 with cellular RRC for UE
|
||||
|
||||
01 02 Run OAI, and check the operation
|
||||
01 02 Run OAI Rel8, and check the operation
|
||||
01 02 00 Run OAI Rel8, and search for segmentation fault or exit
|
||||
01 02 01 Run OAI Rel8, and search for execution errors
|
||||
01 02 02 Run OAI Rel8 in abstraction mode and check that RRC proc is finished completely for the configured number of eNB and UE
|
||||
01 02 03 Run OAI Rel8 in abstraction mode, send ping from from one eNB to each UE, and check that there is no packet losses
|
||||
01 02 04 Run OAI Rel8 with full PHY, and check that the RRC proc for eNBsxUEs
|
||||
01 02 05 Run OAI Rel10 in abstraction mode, and check the RRC proc for eNBsxUEs
|
||||
01 02 05 Run OAI Rel10 in full phy mode, and check the RRC proc for eNBsxUEs
|
||||
01 02 05 Run OAI Rel8 with full PHY in FDD mode, and check that the RRC proc for eNBsxUEs
|
||||
|
||||
01 03 Run OAI Rel10, and check the operation
|
||||
01 03 00 Run OAI Rel10, and search for segmentation fault or exit
|
||||
01 03 01 Run OAI Rel10, and search for execution errors
|
||||
01 03 02 Run OAI Rel10 in abstraction mode, and check the RRC proc for eNBsxUEs
|
||||
01 03 03 Run OAI Rel10 in full phy mode, and check the RRC proc for eNBsxUEs
|
||||
01 03 04 Run OAI Rel10 in full phy mode in FDD mode, and check the RRC proc for eNBsxUEs
|
||||
01 03 05 Run OAI Rel10 with eMBMS enabled, and check the SIB13 and MCCH
|
||||
01 03 06 Run OAI Rel10 with eMBMS enabled, and check the MTCH
|
||||
01 03 07 Run OAI Rel10 with eMBMS enabled and FDD mode, and check the MTCH
|
||||
|
||||
02 Functional test case
|
||||
|
||||
|
||||
@@ -172,9 +172,9 @@ def execute(oai, user, pw, logfile):
|
||||
|
||||
try:
|
||||
test = '07'
|
||||
name = 'Compile oai.rel8.cellular.rg.make'
|
||||
name = 'Compile oai.rel8.cellular.eNB.make'
|
||||
conf = 'make rrc_cellular=1 eNB_flag=1'
|
||||
diag = 'check the compilation errors for RRC Cellular (node RG)'
|
||||
diag = 'check the compilation errors for eNB/RG RRC Cellular'
|
||||
oai.send('make clean;')
|
||||
oai.send('make cleanall;')
|
||||
oai.send('make cleanasn1;')
|
||||
@@ -188,9 +188,9 @@ def execute(oai, user, pw, logfile):
|
||||
|
||||
try:
|
||||
test = '08'
|
||||
name = 'Compile oai.rel8.cellular.mt.make'
|
||||
name = 'Compile oai.rel8.cellular.UE.make'
|
||||
conf = 'make rrc_cellular=1 UE_flag=1'
|
||||
diag = 'check the compilation errors for RRC Cellular (node MT)'
|
||||
diag = 'check the compilation errors for UE/MT RRC Cellular'
|
||||
oai.send('make clean;')
|
||||
oai.send('make cleanall;')
|
||||
oai.send('make cleanasn1;')
|
||||
|
||||
@@ -130,26 +130,15 @@ def execute(oai, user, pw, logfile):
|
||||
|
||||
try:
|
||||
test = '05'
|
||||
name = 'Run oai.rel10.abs.rrc'
|
||||
diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
|
||||
name = 'Run oai.rel8.phy.rrc.fdd'
|
||||
diag = 'RRC procedure is not finished completely in FDD mode, check the execution logs and trace BCCH, CCCH, and DCCH channels'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-a -A AWGN -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 100)
|
||||
conf = '-A AWGN -F -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -s15 -x1'
|
||||
oai.send_expect('./oaisim.rel8 ' + conf, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
|
||||
try:
|
||||
test = '06'
|
||||
name = 'Run oai.rel10.phy.rrc'
|
||||
diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-A AWGN -s 15 -x 1 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
#******************************************************************************
|
||||
|
||||
# Eurecom OpenAirInterface
|
||||
# Copyright(c) 1999 - 2013 Eurecom
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms and conditions of the GNU General Public License,
|
||||
# version 2, as published by the Free Software Foundation.
|
||||
|
||||
# This program is distributed in the hope it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
# more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# The full GNU General Public License is included in this distribution in
|
||||
# the file called "COPYING".
|
||||
|
||||
# Contact Information
|
||||
# Openair Admin: openair_admin@eurecom.fr
|
||||
# Openair Tech : openair_tech@eurecom.fr
|
||||
# Forums : http://forums.eurecom.fsr/openairinterface
|
||||
# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France
|
||||
|
||||
#*****************************************************************************
|
||||
|
||||
# \file case03.py
|
||||
# \brief test case 03 for OAI: executions
|
||||
# \author Navid Nikaein
|
||||
# \date 2013
|
||||
# \version 0.1
|
||||
# @ingroup _test
|
||||
|
||||
import time
|
||||
import random
|
||||
import log
|
||||
import openair
|
||||
import core
|
||||
|
||||
NUM_UE=2
|
||||
NUM_eNB=1
|
||||
NUM_TRIALS=3
|
||||
|
||||
def execute(oai, user, pw, logfile):
|
||||
|
||||
case = '03'
|
||||
oai.send('cd $OPENAIR_TARGETS;')
|
||||
oai.send('cd SIMU/USER;')
|
||||
|
||||
try:
|
||||
test = '00'
|
||||
name = 'Run oai.rel10.sf'
|
||||
conf = '-a -A AWGN -n 100'
|
||||
diag = 'OAI is not running normally (Segmentation fault / Exiting / FATAL), debugging might be needed'
|
||||
oai.send_expect_false('./oaisim.rel10 ' + conf, 'Segmentation fault', 30)
|
||||
oai.send_expect_false('./oaisim.rel10 ' + conf, 'Exiting', 30)
|
||||
oai.send_expect_false('./oaisim.rel10 ' + conf, 'FATAL', 30)
|
||||
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
try:
|
||||
test = '01'
|
||||
name = 'Run oai.rel10.err'
|
||||
conf = '-a -A AWGN -n 100'
|
||||
diag = 'Error(s) found in the execution, check the execution logs'
|
||||
oai.send_expect_false('./oaisim.rel10 ' + conf, '[E]', 30)
|
||||
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
try:
|
||||
test = '02'
|
||||
name = 'Run oai.rel10.abs.rrc'
|
||||
diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-a -A AWGN -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
try:
|
||||
test = '03'
|
||||
name = 'Run oai.rel10.phy.rrc'
|
||||
diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-A AWGN -s 15 -x 1 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
try:
|
||||
test = '04'
|
||||
name = 'Run oai.rel10.phy.rrc.fdd'
|
||||
diag = 'RRC procedure is not finished completely in FDD mode, check the execution logs and trace BCCH, CCCH, and DCCH channels'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-A AWGN -F -s 15 -x 1 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
try:
|
||||
test = '05'
|
||||
name = 'Run oai.rel10.phy.eMBMS.MCCH'
|
||||
diag = 'eMBMS procedure is not finished completely, make sure that the SIB13/MCCH have been correclty received by UEs'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-A AWGN -s 15 -x 1 -Q3 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Found MBSFNAreaConfiguration from eNB ' + str(j), (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, '', logfile)
|
||||
|
||||
try:
|
||||
test = '06'
|
||||
name = 'Run oai.rel10.phy.eMBMS.OTG'
|
||||
diag = 'eMBMS multicast/broadcast data is not received, make sure that the SIB13/MCCH/MTCH have been correclty received by UEs'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-A AWGN -s 15 -x 1 -T mscbr -Q3 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received a multicast packet', (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, 'Note: check the packet loss from the OTG stats', logfile)
|
||||
|
||||
try:
|
||||
test = '07'
|
||||
name = 'Run oai.rel10.phy.eMBMS.OTG.fdd'
|
||||
diag = 'eMBMS multicast/broadcast data is not received in fdd mode, make sure that the SIB13/MCCH/MTCH have been correclty received by UEs'
|
||||
for i in range(NUM_UE) :
|
||||
for j in range(NUM_eNB) :
|
||||
conf = '-A AWGN -F -s 15 -x 1 -T mscbr -Q3 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
|
||||
oai.send_expect('./oaisim.rel10 ' + conf, ' Received a multicast packet', (i+1) * 100)
|
||||
except log.err, e:
|
||||
log.fail(case, test, name, conf, e.value, diag, logfile)
|
||||
else:
|
||||
log.ok(case, test, name, conf, 'Note: check the packet loss from the OTG stats', logfile)
|
||||
|
||||
@@ -144,7 +144,7 @@ def ok(case, testnum, testname, conf, message, output):
|
||||
report(case, testnum, testname, conf, 'passed', output)
|
||||
log_record('passed', case + testnum + ' : ' + testname + ' ('+ conf+')')
|
||||
if message :
|
||||
log_record('passed', "Output follows:\n" + message )
|
||||
print bcolors.okgreen + message + bcolors.normal
|
||||
stats['passed'] += 1
|
||||
|
||||
|
||||
|
||||
@@ -41,10 +41,13 @@ import os
|
||||
import time
|
||||
import datetime
|
||||
import getpass
|
||||
import math #from time import clock
|
||||
|
||||
import log
|
||||
import case01
|
||||
import case02
|
||||
import case03
|
||||
|
||||
from openair import *
|
||||
|
||||
debug = 0
|
||||
@@ -70,11 +73,11 @@ for arg in sys.argv:
|
||||
|
||||
# get the oai object
|
||||
oai = openair('localdomain','localhost')
|
||||
|
||||
#start_time = time.time() # datetime.datetime.now()
|
||||
try:
|
||||
user = getpass.getuser()
|
||||
print '\n*******Note that the user <'+user+'> should be a sudoer *******\n'
|
||||
print '*******Connecting to the localhost to perform the test *******\n'
|
||||
print '\n******* Note that the user <'+user+'> should be a sudoer *******\n'
|
||||
print '******* Connecting to the localhost to perform the test *******\n'
|
||||
|
||||
if not pw :
|
||||
print "username: " + user
|
||||
@@ -95,14 +98,15 @@ test = 'test01'
|
||||
ctime=datetime.datetime.utcnow().strftime("%Y-%m-%d.%Hh%M")
|
||||
logfile = user+'.'+test+'.'+ctime+'.txt'
|
||||
#print '=================start the ' + test + ' at ' + ctime + '=================\n'
|
||||
print 'Results will be reported in log file : ' + logfile
|
||||
#print 'Results will be reported in log file : ' + logfile
|
||||
log.writefile(logfile,'====================start'+test+' at ' + ctime + '=======================\n')
|
||||
log.set_debug_level(debug)
|
||||
|
||||
oai.kill(user, pw)
|
||||
# start te test cases
|
||||
case01.execute(oai, user, pw, logfile)
|
||||
case02.execute(oai, user, pw, logfile)
|
||||
#case01.execute(oai, user, pw, logfile)
|
||||
#case02.execute(oai, user, pw, logfile)
|
||||
#case03.execute(oai, user, pw, logfile)
|
||||
|
||||
oai.kill(user, pw)
|
||||
|
||||
@@ -115,4 +119,6 @@ oai.disconnect()
|
||||
ctime=datetime.datetime.utcnow().strftime("%Y-%m-%d_%Hh%M")
|
||||
log.writefile(logfile,'====================end the '+ test + ' at ' + ctime +'====================')
|
||||
print 'Test results can be found in : ' + logfile
|
||||
#print '\nThis test took %f minutes\n' % math.ceil((time.time() - start_time)/60)
|
||||
|
||||
#print '\n=====================end the '+ test + ' at ' + ctime + '====================='
|
||||
|
||||
Reference in New Issue
Block a user