Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
dce7b444
Commit
dce7b444
authored
Oct 23, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove unused iperf/bash performance testing script
parent
9762b63c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
729 deletions
+0
-729
targets/perf_oai.bash
targets/perf_oai.bash
+0
-729
No files found.
targets/perf_oai.bash
deleted
100755 → 0
View file @
9762b63c
#/*
# * 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
# */
################################################################################
# file build_oai.bash
# brief apply a traffic generator, send traffic and measure the performance of OAI
# OTG is mainly used for OASIM and D-ITG (or iperf) for LTE-SOFTMODEM
# author Navid Nikaein
# company Eurecom
# email: navid.nikaein@eurecom.fr
# date 2015
#!/bin/bash
################################
# include helper functions
################################
THIS_SCRIPT_PATH
=
$(
dirname
$(
readlink
-f
$0
))
.
$THIS_SCRIPT_PATH
/build_helper.bash
check_for_root_rights
#######################################
# Default PARAMETERS
######################################
#general
declare
PERF_APP
=
"PING"
# ITG, ITG_DECODE, PING, OTG,
declare
TEST_MODE
=
0
declare
KEEP_LOG_FILESNUM_PKTS
=
0
declare
OWD
=
"rttm"
declare
DURATION
=
60000
# ms
declare
NUM_PKTS
=
10000
declare
KBYTES
=
1000
# KBYTES
declare
START
=
0
declare
DST
=
"127.0.0.1"
declare
DPORT
=
"8999"
declare
TP
=
"UDP"
declare
IDT_DIST
=
"CONSTANT"
declare
PS_DIST
=
"CONSTANT"
#IDT
declare
RATE
=
1000
# pkt / s
declare
MIN_RATE
=
100
declare
MAX_RATE
=
1000
############## script params #####################
until
[
-z
"
$1
"
]
do
case
"
$1
"
in
-c
|
--test
)
TEST_MODE
=
1
;
echo_info
"enabling the test mode"
shift
;
;;
-l
|
--perf-app
)
PERF_APP
=
$2
echo_info
"Setting the performance evaluation APP to
$PERF_APP
"
if
[
$PERF_APP
=
"DITG"
]
;
then
echo_info
"you need to run "
fi
shift
2
;
;;
-m
|
--owd
)
OWD
=
"owdm"
echo_info
"setting D-ITG one-way-delay meter"
shift
;
;;
-e
|
--duration
)
DURATION
=
$2
echo_info
"Setting the traffic duration to
$DURATION
"
shift
2
;
;;
-n
|
--num-pkts
)
NUM_PKTS
=
$2
echo_info
"Setting number of packets to
$NUM_PKTS
"
shift
2
;
;;
-k
|
--keep-log-file
)
KEEP_LOG_FILESNUM_PKTS
=
1
echo_info
"Keep the log files"
shift
;
;;
-i
|
--idt-dist
)
IDT_DIST
=
$2
echo_info
"setting IDT distribution to
$IDT_DIST
"
shift
2
;
;;
-s
|
--ps-dist
)
PS_DIST
=
$2
echo_info
"setting PS distribution to
$PS_DIST
"
shift
2
;
;;
-d
|
--dst
)
DST
=
$2
echo_info
"setting the destination address to
$DST
"
shift
2
;
;;
-p
|
--dst-port
)
DPORT
=
$2
echo_info
"setting the destination port to
$DPORT
"
shift
2
;
;;
-h
|
--help
)
print_help_perf
exit
-1
;;
*
)
echo
"Unknown option
$1
"
break
;
# unknown option
;;
esac
done
#####################
# create a bin dir
#####################
echo_info
"1. Creating the results dir ..."
#rm -rf results
mkdir
-m
777
-p
results
exp_date
=
`
date
+%Y_%m_%d
`
exp_time
=
`
date
+%H_%M_%S
`
oai_exp_date
=
"exp_date_
${
exp_date
}
"
touch
results/
${
oai_exp_date
}
touch
results/perf_log.txt
chmod
-f
777 results/perf_log.txt
echo
"start experiment at date
$exp_date
time
$exp_time
"
>>
results/
${
oai_exp_date
}
############################################
# setting and printing OAI envs, we should check here
############################################
echo_info
"2. Setting the OAI PATHS ..."
set_openair_env
cecho
"OPENAIR_HOME =
$OPENAIR_HOME
"
$green
cecho
"OPENAIR1_DIR =
$OPENAIR1_DIR
"
$green
cecho
"OPENAIR2_DIR =
$OPENAIR2_DIR
"
$green
cecho
"OPENAIR3_DIR =
$OPENAIR3_DIR
"
$green
cecho
"OPENAIR3_DIR =
$OPENAIR3_DIR
"
$green
cecho
"OPENAIR_TARGETS =
$OPENAIR_TARGETS
"
$green
echo
"OPENAIR_HOME =
$OPENAIR_HOME
"
>>
results/
${
oai_exp_date
}
echo
"OPENAIR1_DIR =
$OPENAIR1_DIR
"
>>
results/
${
oai_exp_date
}
echo
"OPENAIR2_DIR =
$OPENAIR2_DIR
"
>>
results/
${
oai_exp_date
}
echo
"OPENAIR3_DIR =
$OPENAIR3_DIR
"
>>
results/
${
oai_exp_date
}
echo
"OPENAIR3_DIR =
$OPENAIR3_DIR
"
>>
results/
${
oai_exp_date
}
echo
"OPENAIR_TARGETS =
$OPENAIR_TARGETS
"
>>
results/
${
oai_exp_date
}
################################
# run ITGSEND
################################
itg_send
(){
test_install_package d-itg
LOG_FILE
=
"itg_log_template.txt"
touch
results/
${
LOG_FILE
}
if
[
$TEST_MODE
=
0
]
;
then
declare
-a
PS
=(
32 64 128 256 512 1024 1408
)
declare
-a
IDT
=(
1 5 10 50 100 1000
)
else
declare
-a
PS
=(
32 64
)
declare
-a
IDT
=(
1
)
fi
declare
PS_LEN
=
${#
PS
[@]
}
declare
IDT_LEN
=
${#
IDT
[@]
}
#echo_info "PS_LEN is $PS_LEN, IDT_LEN is $IDT_LEN"
declare
i
=
0
declare
j
=
0
declare
e
=
0
# send traffic
for
idt
in
${
IDT
[@]
}
;
do
# echo_info "IDT is set to $idt i is $i"
if
[
$i
-lt
$IDT_LEN
]
;
then
let
i++
;
fi
if
[
$IDT_DIST
=
"CONSTANT"
]
;
then
IDT_OPT
=
"-C
$idt
"
fi
if
[
$IDT_DIST
=
"UNIFORM"
]
;
then
IDT_OPT
=
"-U
$idt
${
IDT
[i]
}
"
fi
if
[
$IDT_DIST
=
"EXPONENTIAL"
]
;
then
IDT_OPT
=
"-E
$idt
"
fi
for
ps
in
${
PS
[@]
}
;
do
# echo_info "PS is $ps j is $j"
if
[
$j
-lt
$PS_LEN
]
;
then
let
j++
;
fi
if
[
$PS_DIST
=
"CONSTANT"
]
;
then
PS_OPT
=
"-c
$ps
"
fi
if
[
$PS_DIST
=
"UNIFORM"
]
;
then
PS_OPT
=
"-u
$ps
${
PS
[j]
}
"
fi
if
[
$PS_DIST
=
"EXPONENTIAL"
]
;
then
PS_OPT
=
"-e
$ps
"
fi
start
=
$(
date
+%s
)
RECV_FILE
=
"recv_log_
${
IDT_DIST
}
_idt
${
idt
}
_
${
PS_DIST
}
_ps
${
ps
}
_
${
OWD
}
_
${
TP
}
"
echo_info
"Start test_
$i
.
$j
:: ITGSend -a
$DST
$IDT_OPT
$PS_OPT
-m
$OWD
-d
$START
-T
$TP
-t
$DURATION
-x
$RECV_FILE
-l "
echo
"Start test_
$i
.
$j
:: ITGSend -a
$DST
$IDT_OPT
$PS_OPT
-m
$OWD
-d
$START
-T
$TP
-t
$DURATION
-x
$RECV_FILE
-l "
>>
results/
${
oai_exp_date
}
#sleep 1
ITGSend
-a
$DST
$IDT_OPT
$PS_OPT
-m
$OWD
-d
$START
-T
$TP
-t
$DURATION
-x
$RECV_FILE
-l
itg_status
=
$?
end
=
$(
date
+%s
)
diff
=
$((
$end
-
$start
))
if
[
$itg_status
=
0
]
;
then
echo_success
"[
$end
] test_
$i
.
$j
passed"
echo
"[
$end
] test_
$i
.
$j
passed"
>>
./results/
$LOG_FILE
STATUS
=
"PASSED"
else
let
e++
;
echo_error
"[
$end
] test_
$i
.
$j
failed :: D-ITG return exit code
$itg_status
"
echo
"[
$end
]test_
$i
.
$j
failed :: ITG return exit code
$itg_status
"
>>
./results/
$LOG_FILE
STATUS
=
"FAILED"
fi
echo_info
"End test_
$i
.
$j
:: runtime:
$diff
"
echo
"End test_
$i
.
$j
:: runtime:
$diff
"
>>
results/
${
oai_exp_date
}
done
done
}
itg_decode
(){
declare
i
=
0
declare
j
=
0
if
[
$TEST_MODE
=
0
]
;
then
declare
-a
PS
=(
32 64 128 256 512 1024 1408
)
declare
-a
IDT
=(
1 5 10 50 100 1000
)
else
declare
-a
PS
=(
32 64
)
declare
-a
IDT
=(
1
)
fi
for
idt
in
${
IDT
[@]
}
;
do
for
ps
in
${
PS
[@]
}
;
do
RECV_FILE
=
"recv_log_
${
IDT_DIST
}
_idt
${
idt
}
_
${
PS_DIST
}
_ps
${
ps
}
_
${
OWD
}
_
${
TP
}
"
OUTPUT_FILE
=
"results_
${
IDT_DIST
}
_idt
${
idt
}
_
${
PS_DIST
}
_ps
${
ps
}
_
${
OWD
}
_
${
TP
}
.txt"
OCTAVE_FILE
=
"results_
${
IDT_DIST
}
_idt
${
idt
}
_
${
PS_DIST
}
_ps
${
ps
}
_
${
OWD
}
_
${
TP
}
.."
echo_info
"decode test_
$i
.
$j
: ITGDec
$RECV_FILE
-v -t -l
$OUTPUT_FILE
-o
$OCTAVE_FILE
"
ITGDec
$RECV_FILE
-v
-t
-l
$OUTPUT_FILE
done
done
}
ping_stats
(){
status
=
"failed"
failedhosts
=
""
# add ip / hostname separated by white space
if
[
$TEST_MODE
=
0
]
;
then
declare
COUNT
=
100
declare
-a
HOSTS
=(
$DST
)
declare
-a
PS
=(
64 768 2048 4096 8192
)
declare
-a
IDT
=(
1 .8 .4 .2
)
else
declare
COUNT
=
10
declare
-a
HOSTS
=(
localhost
)
declare
-a
PS
=(
64 2048
)
declare
-a
IDT
=(
.5
)
fi
declare
i
=
0
declare
j
=
0
declare
k
=
0
start_exp
=
$(
date
+%s
)
for
host
in
${
HOSTS
[@]
}
;
do
let
i++
;
let
j
=
0
;
OUTPUT_FILE
=
"rtt_host
${
host
}
.csv"
touch
results/
${
OUTPUT_FILE
}
for
idt
in
${
IDT
[@]
}
;
do
let
j++
;
let
k
=
0
;
for
ps
in
${
PS
[@]
}
;
do
let
k++
;
# | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
start
=
$(
date
+%s
)
LOG_FILE
=
"recv_log_host
${
host
}
_idt
${
idt
}
_ps
${
ps
}
.txt"
touch
results/
${
LOG_FILE
}
echo_info
"Start test_
$i
.
$j
.
$k
:: ping -c
$COUNT
-q -U
$host
-s
$ps
-i
$idt
"
echo
"Start test_
$i
.
$j
.
$k
:: ping -c
$COUNT
-q -U
$host
-s
$ps
-i
$idt
"
>>
results/
${
oai_exp_date
}
$(
ping
-c
$COUNT
-q
-U
$host
-s
$ps
-i
$idt
1>&2
>>
./results/
$LOG_FILE
)
end
=
$(
date
+%s
)
diff
=
$((
$end
-
$start
))
count
=
$(
cat
./results/
$LOG_FILE
|
awk
-F
,
'/received/{print $2*1}'
)
latency
=
$(
cat
./results/
$LOG_FILE
|
tail
-1
|cut
-f2-
-d
=
)
MIN
=
$(
cut
-f1
-d
/
<<<
$latency
)
AVG
=
$(
cut
-f2
-d
/
<<<
$latency
)
MAX
=
$(
cut
-f3
-d
/
<<<
$latency
)
MDEV
=
$(
cut
-f4
-d
/
<<<
$latency
|
cut
-f1
-d
" "
)
UNIT
=
$(
cut
-f2
-d
" "
<<<
$latency
)
echo_success
"Latency:: count
$count
min
$MIN
avg
$AVG
max
$MAX
mdev
$MDEV
(
$UNIT
)"
echo
"
$idt
;
$ps
;
$COUNT
;
$count
;
$MIN
;
$AVG
;
$MAX
;
$MDEV
;"
>>
./results/
$OUTPUT_FILE
if
[
$count
-eq
0
]
;
then
failedhosts
=
"
$failedhosts
$host
"
status
=
"failed"
else
status
=
"passed"
fi
echo_info
"End test_
$i
.
$j
.
$k
:: runtime:
$diff
:: status
$status
"
echo
"End test_
$i
.
$j
.
$k
:: runtime:
$diff
:; status
$status
"
>>
results/
${
oai_exp_date
}
done
done
done
end_exp
=
$(
date
+%s
)
diff_exp
=
$((
$end_exp
-
$start_exp
))
let
total_tests
=
i
*
j
*
k
;
echo_info
"total tests:
$total_tests
for a duration
$diff_exp
(s)"
}
oaisim_otg_stats
(){
# install the required packages
test_install_package octave
>>
results/perf_log.txt 2>&1
# set paths to the required binaries and check if the required binaries are available
OAISIM
=
"bin/oaisim"
OTGPLOT
=
"
$OPENAIR2_DIR
/UTIL/OTG/OTGplot"
PS2PDF
=
"ps2pdf"
if
[
!
-f
$OAISIM
]
;
then
echo_info
"3.1 compiling OAISIM (
$OPENAIR_TARGETS
/build_oai.bash -t OAISIM -b -D -c)"
(
$OPENAIR_TARGETS
/build_oai.bash
-t
OAISIM
-b
-D
-c
>>
results/perf_log.txt 2>&1
)
build_stats
=
$?
if
[
$build_stats
!=
0
]
;
then
echo_error
"
$OAISIM
cannot be built, check results/perf_log.txt file"
exit
$?
fi
else
echo_info
"ensure that OAISIM is not built with the S1 interface"
fi
(
install_nasmesh
>>
results/perf_log.txt 2>&1
)
if
[
!
-f
$OTGPLOT
]
;
then
echo_error
"
$OTGPLOT
not found"
exit
$?
fi
# Set the default Parameters
ABSTRACTION
=
1
#FRAME_TYPE=0 # FDD=0, TDD =1, 2,3,4,5,6
AGGR_RESULT
=
1
STATUS
=
"PASSED"
EXTRA_STATS
=
0
declare
NUM_UES
=
7
if
[
$TEST_MODE
=
0
]
;
then
declare
-a
TEMPLATES
=(
120 121 122 123 124 125 126 127 128 129 130
)
declare
-a
FRAME_TYPE
=(
0 3
)
declare
-a
METRICS
=(
latency jitter goodput
)
declare
-a
RB
=(
25 50 100
)
else
declare
-a
TEMPLATES
=(
125
)
declare
-a
FRAME_TYPE
=(
3
)
declare
-a
METRICS
=(
latency
)
declare
-a
RB
=(
25
)
fi
if
[
$ABSTRACTION
=
1
]
;
then
OPT
=
"-a "
fi
declare
num_cols
=
0
let
num_cols
=
NUM_UES+1
if
[
$AGGR_RESULT
=
1
]
;
then
COLUMN
=
"[
$num_cols
:
$num_cols
]"
else
COLUMN
=
"[1:
$num_cols
]"
fi
declare
i
=
0
declare
j
=
0
declare
k
=
0
declare
e
=
0
start_exp
=
$(
date
+%s
)
for
template
in
${
TEMPLATES
[@]
}
;
do
let
i++
;
let
j
=
0
;
for
frame
in
${
FRAME_TYPE
[@]
}
;
do
let
j++
;
let
k
=
0
;
if
[
$frame
=
0
]
;
then
OPT
=
"
$OPT
-F "
else
OPT
=
"
$OPT
-C
$frame
"
fi
for
rb
in
${
RB
[@]
}
;
do
let
k++
;
start
=
$(
date
+%s
)
LOG_FILE
=
"oaisim_log_template
${
template
}
_frame
${
frame
}
_rb
${
rb
}
.txt"
touch
results/
${
LOG_FILE
}
echo_info
"[
$start
] Start test_
$i
.
$j
.
$k
::
$OAISIM
$OPT
-R
$RB
-c
$template
"
echo
"Start test_
$i
.
$j
.
$k
::
$OAISIM
$OPT
-R
$RB
-c
$template
"
>>
results/
${
oai_exp_date
}
#sleep 1
$OAISIM
$OPT
-R
$RB
-c
$template
1>&2
>>
./results/
$LOG_FILE
# store exit status
oai_status
=
$?
end
=
$(
date
+%s
)
diff
=
$((
$end
-
$start
))
#check the oaisim exit status
if
[
$oai_status
=
0
]
;
then
echo_success
"[
$end
] test_
$i
.
$j
.
$k
passed"
echo
"[
$end
] test_
$i
.
$j
.
$k
passed"
>>
./results/
$LOG_FILE
STATUS
=
"PASSED"
else
let
e++
;
echo_error
"[
$end
] test_
$i
.
$j
.
$k
failed :: OAISIM return exit code
$oai_status
(remove bin/oaisim)"
echo
"[
$end
]test_
$i
.
$j
.
$k
failed :: OAISIM return exit code
$oai_status
"
>>
./results/
$LOG_FILE
STATUS
=
"FAILED"
fi
# create the curves
for
metric
in
${
METRICS
[@]
}
;
do
if
[
$metric
=
"goodput"
]
;
then
unit
=
"(kB/s)"
else
unit
=
"(ms)"
fi
if
[
-f
/tmp/otg_
${
metric
}
.dat
]
;
then
export
TITLE
=
"Application
$metric
$unit
"
cp
/tmp/otg_
${
metric
}
.dat ./results/otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.dat
echo_info
"
$OTGPLOT
./results/otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.dat
$COLUMN
"
echo
"
$OTGPLOT
./results/otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.dat
$COLUMN
"
>>
results/
${
oai_exp_date
}
$(
$OTGPLOT
./results/otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.dat
$COLUMN
1>&2
>>
./results/
$LOG_FILE
)
$(
$PS2PDF
-dOptimize
=
true
-dEmbedAllFonts
=
true
./otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.eps
)
# remove the first line of the file
echo
"
$(
tail
-n
+2 ./results/otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.dat
)
"
>
./results/otg-
${
metric
}
-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.dat
else
echo_error
"file /tmp/otg_
${
metric
}
.dat does not exists"
fi
done
if
[
$KEEP_LOG_FILESNUM_PKTS
=
0
]
;
then
rm
-f
./results/
$LOG_FILE
fi
mv
*
.eps ./results/
mv
*
.pdf ./results/
mv
/tmp/otg.log ./results/otg-template
${
template
}
-frame
${
frame
}
-rb
${
rb
}
.log
echo_info
"End test_
$i
.
$j
.
$k
:: runtime:
$diff
:: status
$STATUS
"
echo
"End test_
$i
.
$j
.
$k
:: runtime:
$diff
:: status
$STATUS
"
>>
results/
${
oai_exp_date
}
done
done
done
end_exp
=
$(
date
+%s
)
diff_exp
=
$((
$end_exp
-
$start_exp
))
let
total_tests
=
i
*
j
*
k
;
echo_info
"total tests:
$total_tests
for a duration
$diff_exp
(s) error (
$e
)"
echo
"total tests:
$total_tests
for a duration
$diff_exp
(s) error (
$e
)"
>>
results/
${
oai_exp_date
}
}
cba_otg_stats
(){
test_install_package octave
ABSTRACTION
=
1
FRAME_TYPE
=
0
# FDD=0, TDD =1
AGGR_RESULT
=
1
#OAISIM="$OPENAIR_TARGETS/bin/oaisim"
OAISIM
=
"bin/oaisim.cba"
# to compile: make cleanall; make Rel10=1 CBA=1 in targets/SIMU/USER
OTGPLOT
=
"
$OPENAIR2_DIR
/UTIL/OTG/OTGplot"
PS2PDF
=
"ps2pdf"
STATUS
=
"PASSED"
EXTRA_STATS
=
0
declare
NUM_UES
=
7
if
[
$TEST_MODE
=
0
]
;
then
declare
-a
TEMPLATES
=(
120 121 122 123 124 125 126 127 128 129 130
)
declare
-a
CBA
=(
0 1 2 3 4
)
declare
-a
BACKOFF
=(
0 15 30 60 120
)
declare
-a
METRICS
=(
latency jitter goodput
)
declare
-a
RB
=(
25
)
else
declare
-a
TEMPLATES
=(
125
)
declare
-a
CBA
=(
1
)
declare
-a
BACKOFF
=(
0 15 30 60 120
)
declare
-a
METRICS
=(
latency
)
declare
-a
RB
=(
25
)
fi
if
[
!
-f
$OAISIM
]
;
then
echo_error
"
$OAISIM
not found"
exit
$?
fi
if
[
!
-f
$OTGPLOT
]
;
then
echo_error
"
$OTGPLOT
not found"
exit
$?
fi
if
[
$ABSTRACTION
=
1
]
;
then
OPT
=
"-a "
fi
if
[
$FRAME_TYPE
=
0
]
;
then
OPT
=
"
$OPT
-F "
fi
declare
num_cols
=
0
let
num_cols
=
NUM_UES+1
if
[
$AGGR_RESULT
=
1
]
;
then
COLUMN
=
"[
$num_cols
:
$num_cols
]"
else
COLUMN
=
"[1:
$num_cols
]"
fi
declare
collision
=
0
declare
enb_cba_access
=
0
declare
ue_cba_access
=
0
declare
missed
=
0
declare
unused
=
0
declare
i
=
0
declare
j
=
0
declare
k
=
0
declare
e
=
0
start_exp
=
$(
date
+%s
)
STATS1
=
"cba_stats1.txt"
touch
results/
${
STATS1
}
for
template
in
${
TEMPLATES
[@]
}
;
do
let
i++
;
let
j
=
0
;
for
group
in
${
CBA
[@]
}
;
do
let
j++
;
let
k
=
0
;
for
backoff
in
${
BACKOFF
[@]
}
;
do
let
k++
;
start
=
$(
date
+%s
)
LOG_FILE
=
"oaisim_log_template
${
template
}
_group
${
group
}
_backoff
${
backoff
}
.txt"
touch
results/
${
LOG_FILE
}
echo_info
"[
$start
] Start test_
$i
.
$j
.
$k
::
$OAISIM
$OPT
-w
$group
-R
$RB
--cba-backoff
$backoff
-c
$template
"
echo
"Start test_
$i
.
$j
.
$k
::
$OAISIM
$OPT
-w
$group
-R
$RB
--cba-backoff
$backoff
-c
$template
"
>>
results/
${
oai_exp_date
}
#sleep 1
$OAISIM
$OPT
-w
$group
-R
$RB
--cba-backoff
$backoff
-c
$template
1>&2
>>
./results/
$LOG_FILE
# store exit status
oai_status
=
$?
end
=
$(
date
+%s
)
diff
=
$((
$end
-
$start
))
#check the oaisim exit status
if
[
$oai_status
=
0
]
;
then
echo_success
"[
$end
] test_
$i
.
$j
.
$k
passed"
echo
"[
$end
] test_
$i
.
$j
.
$k
passed"
>>
./results/
$LOG_FILE
STATUS
=
"PASSED"
else
let
e++
;
echo_error
"[
$end
] test_
$i
.
$j
.
$k
failed :: OAISIM return exit code
$oai_status
"
echo
"[
$end
]test_
$i
.
$j
.
$k
failed :: OAISIM return exit code
$oai_status
"
>>
./results/
$LOG_FILE
STATUS
=
"FAILED"
fi
if
[
$group
-gt
0
]
;
then
let
ue_cba_access
=
$(
cat
./results/
$LOG_FILE
|
grep
-c
"CBA transmission oppurtunity"
)
let
enb_cba_access
=
$(
cat
./results/
$LOG_FILE
|
grep
-c
"schedule CBA access"
)
let
missed
=
$(
cat
./results/
$LOG_FILE
|
grep
-c
"wait for backoff to expire"
)
let
unused
=
enb_cba_access-ue_cba_access
;
let
collision
=
$(
cat
./results/
$LOG_FILE
|
grep
-c
"first CBA collision detected"
)
#frame, subframe, ue, group
#collision_stats=$(cat ./results/$LOG_FILE | grep "collision" | cut -d " " -f3,5,12,15 )
if
[
$EXTRA_STATS
=
1
]
;
then
STATS2
=
"cba_template_
${
template
}
_stats2.txt"
touch
results/
${
STATS2
}
while
read
-r
line
do
SFN
=
$(
cut
-f1
-d
" "
<<<
$line
)
SSFN
=
$(
cut
-f2
-d
" "
<<<
$line
)
UEID
=
$(
cut
-f3
-d
" "
<<<
$line
)
GPID
=
$(
cut
-f4
-d
" "
<<<
$line
)
#echo_success "$SFN;$SSFN;$UEID;$GPID;"
echo
"
$SFN
;
$SSFN
;
$UEID
;
$GPID
;"
>>
./results/
$STATS2
done
< <
(
cat
./results/
$LOG_FILE
|
grep
"CBA collision set SR for UE"
|
cut
-d
" "
-f3
,5,13,16
)
fi
echo_success
"CBA stats:: template
$template
;group
$group
; backoff
$backoff
; enb cba allocation
$enb_cba_access
; ue cba access
$ue_cba_access
; collision
$collision
; missed
$missed
; unused
$unused
;"
echo
"
$template
;
$group
;
$backoff
;
$enb_cba_access
;
$ue_cba_access
;
$collision
;
$missed
;
$unused
;"
>>
./results/
$STATS1
fi
# create the curves
for
metric
in
${
METRICS
[@]
}
;
do
if
[
$metric
=
"goodput"
]
;
then
unit
=
"(kB/s)"
else
unit
=
"(ms)"
fi
if
[
-f
/tmp/otg_
${
metric
}
.dat
]
;
then
export
TITLE
=
"Application
$metric
$unit
"
cp
/tmp/otg_
${
metric
}
.dat ./results/otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.dat
echo_info
"
$OTGPLOT
./results/otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.dat
$COLUMN
"
echo
"
$OTGPLOT
./results/otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.dat
$COLUMN
"
>>
results/
${
oai_exp_date
}
$(
$OTGPLOT
./results/otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.dat
$COLUMN
1>&2
>>
./results/
$LOG_FILE
)
$(
$PS2PDF
-dOptimize
=
true
-dEmbedAllFonts
=
true
./otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.eps
)
# remove the first line of the file
echo
"
$(
tail
-n
+2 ./results/otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.dat
)
"
>
./results/otg-
${
metric
}
-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.dat
else
echo_error
"file /tmp/otg_
${
metric
}
.dat does not exists"
fi
done
if
[
$KEEP_LOG_FILESNUM_PKTS
=
0
]
;
then
rm
-f
./results/
$LOG_FILE
fi
mv
*
.eps ./results/
mv
*
.pdf ./results/
mv
/tmp/otg.log ./results/otg-template
${
template
}
-group
${
group
}
-backoff
${
backoff
}
.log
echo_info
"End test_
$i
.
$j
.
$k
:: runtime:
$diff
:: status
$STATUS
"
echo
"End test_
$i
.
$j
.
$k
:: runtime:
$diff
:: status
$STATUS
"
>>
results/
${
oai_exp_date
}
# backoff not required when CBA is not used
if
[
$group
-eq
0
]
;
then
break
;
fi
done
done
done
end_exp
=
$(
date
+%s
)
diff_exp
=
$((
$end_exp
-
$start_exp
))
let
total_tests
=
i
*
j
*
k
;
echo_info
"total tests:
$total_tests
for a duration
$diff_exp
(s) error (
$e
)"
echo
"total tests:
$total_tests
for a duration
$diff_exp
(s) error (
$e
)"
>>
results/
${
oai_exp_date
}
}
case
"
$PERF_APP
"
in
'ITGS'
)
echo_info
"3. running ITGSend"
itg_send
;;
'ITGD'
)
echo_info
"running ITGDECODE (ensure that the results are in the current directory)"
itg_decode
;;
'PING'
)
echo_info
"3. running ping"
ping_stats
;;
'OTG-OAISIM'
)
echo_info
"3. running OTG on oaisim"
oaisim_otg_stats
;;
'OTG-CBA'
)
echo_info
"3. running OTG on oaisim with cba"
cba_otg_stats
;;
'IPERF'
)
echo_warning
"iperf not supported"
;;
'NONE'
)
;;
*
)
echo_error
"Unknown option
$RUN_ITG
"
;;
esac
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment