Commit Graph

94 Commits

Author SHA1 Message Date
Andre Puschmann 645b5ccd8e enb_amarisoft: temporary reduce max UL rate on 2nd CC
this is due to a confirmed bug in Amarisoft eNB. will
be reverted as soon as the fix is released.

Change-Id: I182b46cf9e6c2f428c9535edf3c7df3daa912f18
2020-10-05 13:49:12 +02:00
Andre Puschmann 4db88de2fa enb_srs: expose DL AWGN channel modifier for srsENB
we've added the modifier to configure Amarisoft eNB channel
model. This patch enables it for srsENB.

Change-Id: I30e65d0431b2d2792986128287caf8b23a22b2c1
2020-09-20 10:01:17 +00:00
Andre Puschmann 7d3b83ee93 enb: incorporate number of carriers into ue_max_rate() API
this allows the enb to calculate the max rate in a single
spot rather than each test individually

Change-Id: Id225a986e0b271cf9c057c74c9aefd6c7f3d39d6
2020-09-20 10:01:17 +00:00
Andre Puschmann 9bcbb9aea7 ms_srs: trim leading zeros in UE metrics when calculating min_rolling_avg
this avoids a false negative detection when the UE attach takes a bit
longer and the first seconds all zeros are reported in the CSV

the HO test, for example, would fail in such a case as it expects
no zero TP over the course of the experiment.

Change-Id: I96dab17bb19249504dedda6659aed5eac0a65a26
2020-08-27 15:37:54 +02:00
Andre Puschmann 0cfc08436d enb: expose RRC inactivity timer
allow the user to specifiy the RRC inactiviy timer used in the eNB.
set the default value to 20s

Change-Id: I6a264b8dee893b883d40a48831cbb47eb15e1e7b
2020-08-27 15:37:54 +02:00
Andre Puschmann d899cf4b4e rfemu_amarisoft: handle exception and log event if WS is closed
the WS is closed if the eNB process dies. this patch will log an
event but not stop the experiment.

Change-Id: I0fafc7e38954400540375d51813e96500700f50c
2020-08-27 15:37:54 +02:00
Andre Puschmann 58422c5e87 enb_srs: add sleep after stopping srsENB to allow log flush
add similar concept used in the UE to allow the process to flush
the logs

Change-Id: I9f8341869f89cd7ae845072b9da4f6070fa2d242
2020-08-27 15:37:54 +02:00
Andre Puschmann 053ee5fbb7 iperf3: increase additional wait time for iperf client
we've noticed that the Iperf client times out too soon in
some experiment. It seems that this happens with ZMQ if
the RAT is too slow (slower than realtime) and the eNB buffers
too much data. This causes iperf to still receive DL data
for example long after the configured runtime.

Change-Id: I9b823ab22812c96920d54fb7342c8d4c578d5270
2020-07-15 11:48:23 +02:00
Pau Espin 03fab0922e iperf3: server: Avoid copying logfile during cleanup if already copied previously
Change-Id: I44e28f326fd476d27eb021922d38e9ca913aec69
2020-07-13 19:13:55 +02:00
Pau Espin 6b9a50e2e1 iperf3: Avoid creating empty log file
Since a while ago, we avoid by default using the --logfile param to log
the json output to a different file, in order to stay compatible with
older versions of iperf3.
However, the local logfile was still being created, and was not
overwritten with the remote file with content because there's none
created remotely (due to reasons explained above).

Change-Id: I218ec28dc65febc7bd083d6d15854319bf4f3daf
2020-07-13 19:07:29 +02:00
Pau Espin 0f7f265114 4G: Add milenage support
Change-Id: I4c1fb9bfec9927f2bfa29e6b27959323838f59e5
2020-07-13 18:33:53 +02:00
Andre Puschmann 008fd3194b enb_amarisoft: add support for PHY signal log file
when phy.signal=1 is set in the log_options, the eNB will dump
a binary file that needs to be copied back as well

Change-Id: I63d13cb74572ac065d5a3fcfb1632552d0a6dbc6
2020-07-09 13:43:00 +00:00
Andre Puschmann 69dd689644 rfemu_minicircuits: reset attenuation to zero in dtor
this avoids issues when the channel emulation stops in the middle
of a high attenuation values and the device is left in this state.

Change-Id: I9aeafc68bf81b8932aac4cb28040b9aea6bfcbdb
2020-07-09 13:43:00 +00:00
Andre Puschmann 955249d39d enb_amarisoft: add option to enable and configure DL AWGN channel
expose option to enable DL AWGN noise and make SNR configurable

Change-Id: Ib248e87e5abd855d4c974eab42ec40828c6e1d40
2020-07-09 13:43:00 +00:00
Pau Espin 969a4eebae Introduce stress tool object
This object allows to run the "stress" cmdline program in the background
on the specifies run_node, to simulate system load.

To run stress, a test can simply do:
stress = tenv.stress(epc.run_node())
stress.start(cpu_workers=2, mem_workers=1, io_workers=1)

And the test environment will remember to stop it when the test finishes.

Change-Id: I21023e6c64c48109f294291bfe3d8d8f4e1de038
2020-07-02 13:22:48 +02:00
Andre Puschmann 2ebcff934d enb_amarisoft: register log options as config scheme
allows setting those in scenario files

Change-Id: Idefd3c628441ededbee9411117ec426dd585eae0
2020-07-01 12:28:31 +02:00
Andre Puschmann f8c99a863d ms_srs: add min_rolling_average calculation
useful metric to detect low/zero downlink throughput for longer
time periods

Change-Id: I77a82a68689bc6c21cb9227dc9e7616d03e2b547
2020-07-01 10:52:09 +02:00
Andre Puschmann ba40facbaf enb_srs: remove comment introduced through copy+paste
Change-Id: I7d14ae5c17bd1cd1c1b23657dc60dc331519e32c
2020-07-01 10:52:09 +02:00
Andre Puschmann f14ff812ce {ms,enb}_srs: add method to read kpi from a test run
this method uses the kpi_analyzer module for analyzing
stdout, CSV metrics and the logfile (if present).

if the module can't be loaded, no KPI will be added.

Change-Id: I28226a375f9ac4e08424c488062ae6a74a19af92
2020-07-01 10:52:09 +02:00
Pau Espin 315b078fe8 Drop using patchelf out of PATH
New patchelf 0.11 release is out and it has fixes hitting us in both 0.9
and 0.10 on different binaries. So let's simply requiring having
patchelf 0.11 in all cases and be done with it (actually, if not running
4G binaries, using 0.9 is enough).

Related: OS#4389
Change-Id: I2701e46e7710db4c923a68e6b3a2f3c7b126f356
2020-06-25 20:04:29 +02:00
Andre Puschmann 82ced3fb1d {enb,epc,ms}_srs: expose log.all_level parameter
expose paramter to set log level, use warning as default

Change-Id: I4e77e5351399aefef47a309c82b8805e2c6022c5
2020-06-23 16:41:00 +02:00
Andre Puschmann 7c1c8d62e8 ms_srs: fix scp-back-metrics routine
every call to verify_metrics would copy back metrics again. see log here:

23:29:22.149299 run                 srsue(pid=31521): Terminating (SIGINT)
23:29:22.368263 run                 srsue(pid=31521): Terminated: ok {rc=0}
23:29:28.401035 run      scp-back-metrics(pid=32265): Launched
23:29:29.423083 run      scp-back-metrics(pid=32265): Terminated: ok {rc=0}
23:29:29.490275 run      scp-back-metrics(pid=32271): Launched
23:29:30.513852 run      scp-back-metrics(pid=32271): Terminated: ok {rc=0}
23:29:30.550862 run      scp-back-metrics(pid=32277): Launched
23:29:31.573962 run      scp-back-metrics(pid=32277): Terminated: ok {rc=0}

this patch only copies back metrics only once. also make sure that, similar
to logs, metrics are always copied back at the end of the run even if they
are not used for metrics checking. this is needed to run the plotting
script.

Change-Id: Ie7c156a5b2c8768bf90ff8e86515976e0d454c25
2020-06-23 16:41:00 +02:00
Andre Puschmann 55b455cbf6 iperf3: add getter to retrieve received bitrate
Change-Id: Id5676ce002cab6d52480b9b0f996f3065fd5dda6
2020-06-23 16:41:00 +02:00
Andre Puschmann 0957e9e095 enb: add getter for number of cells of an eNB
In order to set up the channel emulator we need to calculate the total
number of RF channels that a eNB has from within a test.

Change-Id: If641993033eb5dcdc6e2d6afdc8426ed322241ca
2020-06-23 16:41:00 +02:00
Andre Puschmann 219ec75aa9 iperf3: add getter to read the actual run time of an iperf client run
this is helpful to run some action for the exact run time of an iperf3
session. note that if no time spec is given when calling
"prepare_test_proc()", a modifier could set the runtime of an DL experiment
to an arbitrary value so we need to have a mechanism to read
the actual time from within a test

Change-Id: I484a0add322ffd269a1e9df72a00cf348950b268
2020-06-23 16:41:00 +02:00
Pau Espin 14bb5ff9de ms_osmo_mobile.py: Fix missing sublcass implementation of abstract MS methods
Change-Id: Icddab08c84ef97924d10801d7128158f515bcd01
2020-06-17 12:29:03 +02:00
Pau Espin 5680255fb5 iperf3: Add support for setting TOS
Change-Id: I3ccc249ad1c9598c606303c52eff6823f45afa7b
2020-06-16 10:04:04 +00:00
Pau Espin 229f11647e iperf3: Refactor iperf3cli popen arg list generation
Change-Id: I10ab737e1317a52b6ccbd0de2470a9cf0c90c934
2020-06-16 10:04:04 +00:00
Andre Puschmann be50eae49b ms_srs: fix additional_args init
regressions after porting to list. init to new empty list

Change-Id: I06f370462934ca35f3aa13bbfcd9e5fc3df91895
2020-06-15 22:12:46 +02:00
Pau Espin e592de8056 srs: Convert additional_args attr to list to allow combining different params
Change-Id: I4b371332cd6fbe11b98c85c79a6f8fdcc776a57b
2020-06-15 17:31:23 +02:00
Andre Puschmann f678c4dfec iperf3: increase extra timeout to 30s
10s was too short and has still caused tests to fail because they were
stopped just before the iperf finished.

30s seems to be enought and has passed multiple times so far

Change-Id: I80b732a060356aa98882ff0e8b5debaf623ba0fb
2020-06-15 15:09:37 +00:00
Andre Puschmann 8b1547b562 rfemu: add max attenuation getter
this allows to query the maximum channel attenuation from within a test case

Change-Id: I35f7cb188790c59bbf2450f78c663fbc9440e406
2020-06-15 15:09:37 +00:00
Andre Puschmann ccb632037d enb_amarisoft: fix typo
Change-Id: Ie898da5eae10af96c2bca6c2413bdff4a5160e9f
2020-06-15 15:09:37 +00:00
Andre Puschmann b0ebcbcf10 epc: refactor run_wait() method and rename to prepare_proc()
this refactor no longer enforces blocking operation of the process.
Instead it returns the process object to the caller who
can now run either proc.launch() for non-blocking operation
or proc.launch_sync() for blocking mode.

The non-block mode allos doing other stuff in the background,
for example controlling the rfemu while running a ping.

Change-Id: Ia6372e55a8829f722e40db537d9dfd63a94d1be9
2020-06-15 15:09:37 +00:00
Pau Espin a9bc93da99 iperf3: Fix iperf3cli.launch_sync() when configured to run more than 300 sec
process object always used timeout=300 while runnig wth launch_sync().
Let's allow replacing that value beforehand so that iperf3 can
pre-configure the process object and caller doesn't need to care about
calculating expected time.

Change-Id: I7f6c5078f648013515919aa35ebcdb3ef157b5e4
2020-06-12 15:34:32 +02:00
Pau Espin 664e383021 EventLoop: Fix log error "Origin parent loop" during wait()
Setting the log.ctx manually is not needed anymore and it's actually
harmful since all palces where it was used, a log.Origin already in path
was being passed, causing a origin loop.

Change-Id: I0511b9f7bc59e3c7f2269ff3155d0c95db58d063
2020-06-10 19:50:12 +02:00
Pau Espin 3a81a7e4dc tests: Replace is_connected() with is_registered()
API was renamed and old name deprecated, let's use it everywhere.

Change-Id: Ic91dddcfd1a5a17c35d15a8a14628b3923229523
2020-06-10 17:57:37 +02:00
Andre Puschmann 0a5011047a enb,ms: refactor base_rate selection for ZMQ
Use tailored sample rate only use for 6, 50 and 75 PRB. For all other bandwidths,
we use the full LTE rate and downsample.
With 5.76e6 as base sample rate, for example, we had some issue during the tests like:

[zmq] Error: tx time is 0.178 ms in the past (7833600 < 7835648)
[zmq] Error: tx time is 0.011 ms in the past (7835520 < 7835648)

Using a higher sample rate seems to work better.

Change-Id: I53678587b2c5e0e5dccb1b55a328ad2f1a97fc4c
2020-06-10 15:41:46 +02:00
Andre Puschmann acdf416796 enb_amarisoft: decrease max rate for TM2+
perhaps additional CRS for MIMO up to 25 PRB result in slighlt lower max rate

Change-Id: I128085e308f400622683905245d42f92a631e81d
2020-06-10 15:41:46 +02:00
Andre Puschmann 10ed8dc3a7 enb_srs: add extra head room for max rate with 6 PRB in MIMO mode
the overhead with 6 PRB and MIMO is a bit higher when compared
to other PRBs resulting in lower achievable throughput

Change-Id: I63888435553bba4f7be88cc745e24472921a7fb4
2020-06-10 15:41:46 +02:00
Andre Puschmann 419a662f76 ms_srs: refactor UE state getter functions
rename UE helper functions to query RRC connected/idle state
and adapt tests accordingly

also add helper to retrieve assinged IP address

Change-Id: I6cd057e34b4df6a1a73695355dd6406d7e039546
2020-06-10 15:40:00 +02:00
Andre Puschmann 3c978fe0f2 ms_srs: add PRACH, reestablishment and paging counter
this allows to query the number of PRACH attempts and paging
messages received during a test

Change-Id: I592ace7c38d98bfbbec5001a3cdfffe21733ef9f
2020-06-10 10:12:49 +02:00
Andre Puschmann aa7b5b7751 epc: add run function to EPC
this allows, for example, to run a ping originating from the core to the UE

Change-Id: Id86c61cbccd41b77f94f125d8d127e2ab5e46cd9
2020-06-10 10:12:49 +02:00
Andre Puschmann 61d150b115 enb: refactor ue_max_rate() and move helper function back to sub classes
It turned out that the Amarisoft and SRS eNB scheduler produces
slightly different maximum data rates for both UL and DL.

Change-Id: I30fa7006906d101c53ba586fb06bced3945aa960
2020-06-10 10:12:49 +02:00
Pau Espin 166dc10769 testenv: Support test overlaying a directory to look for templates
This way tests which require a very specific config file can override
specific template files used by object classes.

Change-Id: I65d1b1e826d2d430ee83810d998b98d0ccaa07cd
2020-06-04 20:03:07 +02:00
Andre Puschmann eb7ced1367 ms_srs: sum bitrates for all component carrier
when calculating the dl and ul bitrate, it is required to take the
sum of all active component carriers since they are reported seperately
inside the CSV file

Change-Id: If30ec3f22ce5871f911433e6a6997e9c6e7ca210
2020-05-29 09:55:59 +00:00
Andre Puschmann 346ffd9192 enb: remove freq config for zmq operation
specifiying the rx/tx_freq for the eNB is optional. But when
it's done it needs to be correct. There seems to be an issue
when mapping the freq[0-3] between srsENB and Amarisoft eNB.

So it's safe to just drop the config here altogether.

Change-Id: I70f5776173c2df5894031f68df2f6c3a900b79f8
2020-05-29 09:55:40 +00:00
Pau Espin eddff7c03c ms_{srs,amarisoft}: Support selecting tgz based on run_node's run label
Change-Id: I2c4cab02fa34c7acc7e57c3fec5a42c26d2a9208
2020-05-28 13:13:05 +00:00
Pau Espin b452ed6db1 enb_{srs,amarisoft}: Support selecting tgz based on run_node's run label
Change-Id: Ie1c8ccd2ffc9680bd72159872f3de0d59f1b9b0b
2020-05-28 13:13:05 +00:00
Pau Espin 5f826be20a ms_{srs,amarisoft}: Reuse run_node to hold run info
Change-Id: Ifdea48fed0bfc152131c53b87c34b4514c632917
2020-05-28 13:13:05 +00:00