case02.py 8.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#******************************************************************************

#  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 case02.py
31
# \brief test case 02 for OAI: executions
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
# \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

47
def execute(oai, user, pw, logfile,logdir):
48 49 50 51 52 53 54 55 56 57
    
    case = '02'
    oai.send('cd $OPENAIR_TARGETS;')
    oai.send('cd SIMU/USER;')
    
    try:
        test = '00'
        name = 'Run oai.rel8.sf'
        conf = '-a -A AWGN -n 100'
        diag = 'OAI is not running normally (Segmentation fault / Exiting / FATAL), debugging might be needed'
58 59
        trace = logdir + '/log_' + case + test + '_1.txt;'
        tee = ' 2>&1 | tee ' + trace
60
        oai.send_expect_false('./oaisim.rel8 ' + conf + tee, 'Segmentation fault', 30)
61 62
        trace = logdir + '/log_' + case + test + '_2.txt;'
        tee = ' 2>&1 | tee ' + trace
63
        oai.send_expect_false('./oaisim.rel8 ' + conf + tee, 'Exiting', 30)
64 65
        trace = logdir + '/log_' + case + test + '_3.txt;'
        tee = ' 2>&1 | tee ' + trace
66
        oai.send_expect_false('./oaisim.rel8 ' + conf + tee, 'FATAL', 30)
67 68

    except log.err, e:
69
        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
70 71 72 73 74 75
    else:
        log.ok(case, test, name, conf, '', logfile)

    try:
        test = '01'
        name = 'Run oai.rel8.err'
76
        conf = '-a -A AWGN -n 100 -l7'
77 78
        trace = logdir + '/log_' + case + test + '_3.txt;'
        tee = ' 2>&1 | tee ' + trace
79 80 81 82 83 84 85 86 87 88 89 90 91 92
        diag = 'Error(s) found in the execution, check the execution logs'
        oai.send_expect_false('./oaisim.rel8 ' + 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.rel8.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) :
93
                conf = '-a -A AWGN -l7 -n' + str((i+1+j) * 40) + ' -u' + str(i+1) +' -b'+ str(j+1)
94 95
                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
                tee = ' 2>&1 | tee ' + trace
96
                oai.send_expect('./oaisim.rel8 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 50)
97
    except log.err, e:
98
        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
99 100 101 102 103 104 105
    else:
        log.ok(case, test, name, conf, '', logfile)
        
    try:
        test = '03'
        name = 'Run oai.rel8.abs.ping'
        diag = 'Data-plane is not working normally, check the OAI protocol stack, OAI driver, and normal operation of the OS'
106
        
107
        oai.driver(oai,user,pw)
108 109 110 111

        for i in range(NUM_eNB) :
            for j in range(NUM_UE) :
                conf = '-a -A AWGN -l6 -u' + str(i+1) +' -b'+ str(j+1)
112
                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
113 114
                tee = ' 2>&1 > ' + trace

115
                if user == 'root' :
116
                    oai.send('./oaisim.rel8.nas ' + conf + ' &')
117
                else :    
118 119
                    oai.send('echo '+pw+ ' | sudo -S -E ./oaisim.rel8.nas ' + conf + tee + ' &')
                time.sleep(20)
120
                for k in range(NUM_TRIALS) :
121 122 123 124
                    trace_ping = logdir + '/log_' + case + test + '_' + str(i) + str(j) + str(k) + '_ping.txt'
                    tee_ping = ' 2>&1 | tee ' + trace_ping

                    oai.send_expect('ping 10.0.'+str(j+1)+'.'+str(NUM_eNB+i+1) + ' -c ' +  str(random.randint(2, 10))+ ' -s ' + str(random.randint(128, 1500)) + tee_ping, ' 0% packet loss', 20)
125
                if user == 'root' :
126
                    oai.send('pkill oaisim.rel8.nas;')
127 128
                    oai.send('pkill oaisim.rel8.nas;')
                else :
129
                    oai.send('echo '+pw+ ' | sudo -S pkill oaisim.rel8.nas;')
130
                    time.sleep(1)
131
                    oai.send('echo '+pw+ ' | sudo -S pkill oaisim.rel8.nas;')
132 133
        
        oai.rm_driver(oai,user,pw)
134 135

    except log.err, e:
136
        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
137 138 139 140 141 142 143 144 145
    else:
        log.ok(case, test, name, conf, '', logfile)
        
    try:
        test = '04'
        name = 'Run oai.rel8.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) :
146
                conf = '-A AWGN -l7 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -s15 -x1'
147 148
                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
                tee = ' 2>&1 | tee ' + trace
149
                oai.send_expect('./oaisim.rel8 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
150
    except log.err, e:
151
        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
152 153 154 155 156
    else:
        log.ok(case, test, name, conf, '', logfile)

    try:
        test = '05'
157 158
        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'
159 160
        for i in range(NUM_UE) :
            for j in range(NUM_eNB) :
161
                conf = '-A AWGN -l7 -F -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -s15 -x1'
162 163
                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
                tee = ' 2>&1 | tee ' + trace
164
                oai.send_expect('./oaisim.rel8 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
165
    except log.err, e:
166
        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
167
    else:
168 169
        log.ok(case, test, name, conf, '', logfile)

170 171 172 173 174 175
    try:
        test = '06'
        name = 'Run oai.rel8.itti.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) :
176 177 178
                log_name = logdir + '/log_' + case + test + '_' + str(i) + str(j)
                itti_name = log_name + '.log'
                trace_name = log_name + '.txt'
179
                conf = '-a -l7 -A AWGN --enb-conf ../../PROJECTS/GENERIC-LTE-EPC/CONF/enb.sfr.sud.conf -n' + str((i+1+j) * 40) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -K' + itti_name
180 181 182 183
                tee = ' 2>&1 | tee -a ' + trace_name
                command = './oaisim.rel8.itti ' + conf
                oai.send('echo ' + command + ' > ' + trace_name + ';')
                oai.send_expect(command + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 50)
184
    except log.err, e:
185
        log.fail(case, test, name, conf, e.value, diag, logfile, trace_name)
186 187 188
    else:
        log.ok(case, test, name, conf, '', logfile)
        
189