case13.py 5.65 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#******************************************************************************

#  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
# \brief test case 02 for OAI: executions
# \author Navid Nikaein
# \date 2013
# \version 0.1
# @ingroup _test

import time
import random
import log
import openair 
import core
import os


import shutil # copy file 

47
NUM_UE=1
48
49
50
NUM_eNB=1
NUM_TRIALS=3

nikaeinn's avatar
nikaeinn committed
51
PRB=[25,50,100]
52
MCS=[0,4,9,10,13,16,17,22,27]
53
54
#PRB=[100]
#MCS=[16]
55
56
ANT_TX=1  # 2 
ANT_RX=2  # 2 
57
58
CHANNEL=["N"]
#CHANNEL=["C","E","F","G","H","I","L","M"] # A,B,C,D,E,F,
59
TX_MODE=2 # 2, 
60
61
MIN_SNR=0 
MAX_SNR=40
62
PERF=75
63
OPT="-L"
nikaeinn's avatar
nikaeinn committed
64
FRAME=2000
65
66
67
68
#OPT="-L -d" # 8bit decoder , activate dci decoding at UE



nikaeinn's avatar
nikaeinn committed
69
def execute(oai, user, pw, host,logfile,logdir,debug,cpu):
70
    
71
    case = '10'
72
73
74
75
    oai.send('cd $OPENAIR1_DIR;')     
    oai.send('cd SIMULATION/LTE_PHY;')   
    
    try:
76
        log.start()
77
        test = '300'
78
79
80
        name = 'Run oai.ulsim.sanity'
        conf = '-a -n 100'
        diag = 'ulsim is not running normally (Segmentation fault / Exiting / FATAL), debugging might be needed'
81
        trace = logdir + '/log_' + host + case + test + '_1.txt;'
82
        tee = ' 2>&1 | tee ' + trace
83
84
        oai.send_expect_false('./ulsim.rel8.'+ host + ' ' + conf + tee, 'Segmentation fault', 30)
        trace = logdir + '/log_' + host + case + test + '_2.txt;'
85
        tee = ' 2>&1 | tee ' + trace
86
87
        oai.send_expect_false('./ulsim.rel8.'+ host + ' ' + conf + tee, 'Exiting', 30)
        trace = logdir + '/log_' + host + case + test + '_3.txt;'
88
        tee = ' 2>&1 | tee ' + trace
89
        oai.send_expect_false('./ulsim.rel8.'+ host + ' ' + conf + tee, 'FATAL', 30)
90
91
92
93
94
95
96

    except log.err, e:
        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
    else:
        log.ok(case, test, name, conf, '', logfile)
    
    try:
97
        log.start()
98
        test = 310
99
100
101
        name = 'Run oai.ulsim.perf.'+str(PERF)+'%'
        diag = 'no diagnostic is available, check the log file'
        for i in range(len(PRB)):
102
103
104
105
            for o in range(len(CHANNEL)):
                MIN_SNR=0
                for j in range(len(MCS)):
                    for m in range (1,ANT_RX):
106
107
                        for p in range(1,TX_MODE):
                            for q in range(MIN_SNR,MAX_SNR): 
108
                                #if  if PRB[i] :
109
                                
110
                                conf = '-B' + str(PRB[i]) + ' -m'+str(MCS[j]) + ' -y'+str(m) + ' -g'+str(CHANNEL[o]) + ' -x'+str(p) + ' -s'+str(q) + ' -w1.0 -e.1 -P -n'+str(FRAME)+' -O'+str(PERF)+' '+ OPT  
111
112
                                trace = logdir + '/time_meas' + '_prb'+str(PRB[i])+'_mcs'+ str(MCS[j])+ '_antrx' + str(m)  + '_channel' +str(CHANNEL[o]) + '_tx' +str(p) + '_snr' +str(q)+'.'+case+str(test)+ '.log'
                                tee = ' 2>&1 | tee ' + trace
113
114
115
116
                                if cpu > -1 :
                                    cmd = 'taskset -c ' + str(cpu) + ' ./ulsim.rel8.'+ host + ' ' + conf + tee
                                else :
                                    cmd = './ulsim.rel8.'+ host + ' ' + conf + tee
117
                                
118
                                if debug :
119
120
                                    print cmd
                                
121
122
                               # match = oai.send_expect_re(cmd, 'passed', 0, 1000)
                                match =1
123
124
                                if match :
                                    log.ok(case, str(test), name, conf, '', logfile)
125
                                    MIN_SNR = q - 1 # just to speed up the test
126
                                    test+=1
127
                                    break # found the smallest snr
128
                                else :
129
130
131
132
                                    if q == MAX_SNR -1 :
                                        log.skip(case,str(test), name, conf,'','',logfile) 
                                        test+=1
                                        break
133
134
135
136
137
                                    try:  
                                        if os.path.isfile(trace) :
                                            os.remove(trace)
                                    except OSError, e:  ## if failed, report it back to the user ##
                                        print ("Error: %s - %s." % (e.filename,e.strerror))
138
139
                                
                                
140
141
142
143
144
145
                                            
    except log.err, e:
        log.fail(case, str(test), name, conf, e.value, diag, logfile,trace)
    #else:
    #    log.ok(case, test, name, conf, '', logfile)