Skip to content

Loading builds...

Changes

#288 (Mar 15, 2021, 1:12:26 PM)

sysmocom: emergency_preemptive_call.py: Avoid test failure if 2nd call not fully established

It may happen that the non-emergency call MT leg is still not properly
released when the emergency call MT leg is to be assigned a TCH, meaning
BSC will fail with an Assignment Failure upon Assignment request from
MSC.
The test sometimes passed and sometimes didn't, due to above mentioned
race condition. Let's relax a bit the test expectancies to have it
always passing, while still verifying preemption happens, and MT phone
is reached.

Related: OS#4549
Change-Id: I3697227cac56a1327f9ea08c5c2f52568e8d2a8a
Pau Espin Pedrol at
Copy gnuradio zmq broker at runtime

The remotely run script is moved into a new subdir called "external",
where external utils to be used by osmo-gsm-tester (exernal to its own
process) are placed.
It needs to be in another directory because python files in obj/ are
loaded at startup of osmo-gsm-tester to dynamically load schemas.

Change-Id: I633a85294694f2c6efd58535729e9b8af166b3ff
Pau Espin Pedrol at
enb: Name preferrably by label, use it in remote run dir

This way several ENB will place its config and logs into different dirs.

Change-Id: I9b0c74cd63bc3888f380c66d94271beafc0db915
Pau Espin Pedrol at
enb: Fix non-1st ENB gnubreaker remote address

ENB was using its own address as a remote address when the broker is
used, which actually only holds true for the first ENB (since the broker
is currently run on the same host/address of the first ENB).

Change-Id: I5c83075d140632846c6d357152963754d16b4633
Pau Espin Pedrol at
srsenb_rr.conf: add PCI, TAC and root_seq_idx as cell param

make sure to insert cell specific TAC, PCI and root seq ind
into cell config and do not depend on cell index for a particular
enb. This causes issues in multi-eNB setups.

Change-Id: I6642128a449a0562dd23f7fa393ff48ae2503006
Pau Espin Pedrol at
enb: Support cells from different ENBs in ncell_list

Change-Id: I1242c56ff42caea06e7f96317def82064fd11325
Pau Espin Pedrol at
sysmocom: Introduce suite 4g2enb

Change-Id: I73b1a5e07f81fa1e3d3db1db243a3d0b137bda8e
Pau Espin Pedrol at
resource: Support waiting for reserved resources until available

Before this patch, almost everything was in place to support concurrent
osmo-gsm-tester instances sharing a common state dir. However, during
resource reservation, if the reservation couldn't be done due to too
many resources being in use, osmo-gsm-tester would fail and skip the
test suite.
With this patch, OGT will wait until some reserved resources are
released and then try requesting the reservation again.

Change-Id: I938602ee890712fda82fd3f812d8edb1bcd05e08
Pau Espin Pedrol at
iperf3_{dl,ul}: adapt pass/fail threshold

change pass threshold to 80% of the max rate for
half of the testduration (rolling average).

the overall average might be lowered because of a slower
TCP start or a late UE attach.

Change-Id: I8a545b8175784e9d6b49d6bf80f637ef7aa731f7
andre at
{enb,ms}_srs: Add DL QAM-256 support

Due to the integration of DL-QAM256 another table for DL max rates is needed.
Therefore, I added the parameter 'qam256' to the feature list in the resource.cfg.

The patch also enables the correct UE settings in the config file.

Change-Id: I2d34395449cdcfb31db66ea887d9adbee551e757
andre at
epc_srs.py: Fixed reference in local execution

fixes local execution of srsEPC

Change-Id: I36db8f2f65be6c92ccea050f550e21b67bb9e50e
andre at
enb-cells_2ca: add missing cell params

the default params are set for a single cell in defaults.conf
but this 2 cell config requires them to be set explicitly.

Change-Id: I8b3c486eb3e42aeb04b6a7548d3f0de2aa40ee0c
andre at
schema: allow empty lists in resource schema

Change-Id: I9249e29deef00d4dd68f89c704ef1d3093c799fd
andre at
enb: add scenario file for inter-eNB HO with two cells

Change-Id: I356a81814a2d7714a1a5252aa357257901fa6227
andre at
cell_modifiers: refactor HO cell configs

* rename intrafreq vs intraenb
* add missing mandatory params

Change-Id: Icc1fe5c1711ecbed2f1b8b1e6a0b51c2d28ec651
andre at
enb: add QAM64 support for UL

* add new UE feature
* enable in srsue.conf.templ
* add new table for maximum rates
* add config scenario to enable SIB option for QAM64

Change-Id: I6ac2c9989a761e91b93d76c2507f55f0140b202d
andre at
add scenario to modify bandwith of 2 eNB objects

required for Inter-eNB HO configs, for example.

Change-Id: Iaf053941ff31c4ba94edf67fc54c0f1c1441577d
andre at
ms_amarisoft: fix various regressions

this patch fixes some regressions in the Amarisoft UE class,
the config template, etc. that have been undetected bc we never
executed tests with it.

Change-Id: I397e675a4018acf3372a3b7e29fd864703b2b919
andre at
jenkins-build-amarisoft.sh: set symlink to srslte_rf lib

Change-Id: Ifc8e5ba0dd59fb92cdf22f2a18acea904e2153f7
andre at
gnuradio_zmq_broker_remote: fix eNB port mapping for carrier aggregation

the mapping of ports didn't consider when a eNB had two ports for
different EARFCNs

Change-Id: I5548f67a3b37b03482e4b6172828fcd891e704a5
andre at
Process: Add remote_port as new parameter

remote_port defines a custom/additional port for
connections over ssh. It may be used in case several
ssh instances share one IP address.

Change-Id: I2c93fd2ea1c10c333d00eafd3c1066c35796e398
Pau Espin Pedrol at
prod: after hardware move, adjust modem pci for sierra_1st and sierra_2nd (ONLY TWO)

Doing only the first two modems so far because I need them for handover
runs. The other modems are still todo!

Change-Id: Ibd71acfc76c01ffd105abe5effc1d246b1e65f85
Neels Hofmeyr at
contrib: Disable libmnl dependency cross-compiling osmo-pcu

Only newest OE SDKs have libmnl added, but we don't need this feature
anyway, so let's disable it in order to get builds running fine again.

Change-Id: Id3b30d0b183cd21fd6df89fdda5581ab58c7a9a5
Pau Espin Pedrol at
contrib: Disable libmnl dependency cross-compiling osmo-bts

Only newest OE SDKs have libmnl added, but we don't need this feature
anyway, so let's disable it in order to get builds running fine again.

Change-Id: Ief9cbca6e10b1ed6acf6e079f660fc3f7c863c7b
Pau Espin Pedrol at
cfg templates: log level and source basename last, log no category-hex

Makes for saner log output in stderr files.

Change-Id: I2755beffd18d6779367c04e4aaaed119d66eb3be
Neels Hofmeyr at
add osmo_vty.py

To trigger manual handovers, I need a VTY interface. The non-trivial
parts of this are copied from osmo-python-tests osmo_interact_vty.py.

Will be used in the upcoming handover_2G test suite in
I0b2671304165a1aaae2b386af46fbd8b098e3bd8.

Change-Id: I7c17b143b7c690b8c4105ee7c6272670046fa91d
Neels Hofmeyr at
add bsc.vty: always keep a BSC VTY connection ready

The BSC's VTY port will be used to trigger manual handover, and to
retrieve a list of active lchans from the BSC, in the upcoming
handover_2G test suite, I0b2671304165a1aaae2b386af46fbd8b098e3bd8.

Change-Id: I06652db04fc9e48748f3c2196334f5352e9cc48a
Neels Hofmeyr at
bsc: add active lchan matching via vty

Will be used in upcoming handover_2G test suite in
I0b2671304165a1aaae2b386af46fbd8b098e3bd8, which needs to verify that a
handover actually ended up on the expected lchan.

Change-Id: I03df8f3ae2ee47930eee311c7ce104c36dbb3154
Neels Hofmeyr at
bts: allow configuring ARFCN and BSIC: add to schema

resources.conf is already allowed to set these, but in order to let
scenarios and suites modify these values, they need to be in the schema.

Change-Id: I8e0583e9208d563c66b0bdc9f25b1b74f92403c2
Neels Hofmeyr at
log passed tests

In the end of a test suite, do not omit the passed tests. For example,
running handover against N BTS combinations, it was hard to summarize
which BTS models actually succeeded, with only the failures listed.

Besides the "FAIL" listings, now print something like this in the end:

PASS: handover:sysmo+secondbts-trx-b200 (pass: 1)
     pass: handover.py (198.8 sec)
PASS: handover:sysmo+secondbts-trx-umtrx (pass: 1)
     pass: handover.py (192.7 sec)
PASS: handover:trx-b200+secondbts-trx-umtrx (pass: 1)
     pass: handover.py (193.1 sec)

Change-Id: Ib85a5b90e267c2ed2f844691187ecadc8939b1bb
Neels Hofmeyr at
log reserved resources

On non-debug log level, show something like this at the beginning of
each suite:

03:45:49.439720 tst handover:sysmo+secondbts-trx-b200: RESERVED RESOURCES for handover:
bts
   sysmoBTS 1002
   Ettus B200
ip_address
   10.42.42.2
   10.42.42.3
   10.42.42.4
   10.42.42.5
   10.42.42.6
   10.42.42.7
modem
   sierra_1st
   sierra_2nd

Change-Id: Ic23556eafee654c93d13c5ef405028da09bd51d7
Neels Hofmeyr at
configure fixed ARFCN per bts

Remove ARFCNs as a concept from resource pool, assign a fixed ARFCN to
each BTS and TRX in the resource pools.

Using ARFCNs on specific bands as resources was an idea that is hard to
implement, because specific BTS dictate selection of bands which
influences which ARFCNs can be picked. That means reserving ARFCN
resources is only possible after reserving specific BTS resources, but
the tester is currently not capable of such two-stage resolution.

Writing handover tests, I got the problem that both BTS in a scenario
attempt to use the same ARFCN.

The by far easiest solution is to assign one fixed ARFCN to each BTS and
TRX. If ever needed, a scenario modifier can still configure different
ARFCNs.

(Due to uncertainty about OC2G operation stability, I prefer to leave
OC2G on ARFCN 50, as it happened to end up being configured before this
patch.)

Change-Id: I0a6c60544226f4261f9106013478d6a27fc39f38
Neels Hofmeyr at
process: add get_output_mark() and grep_output()

Allow showing log lines matching specific regexes, from a specific start
point of a log.

My use case is to echo the handover related logging after an expected
handover failed, so that the reason is visible already in the console
output of a jenkins run. So far I would need to open the endless bsc log
and look up the matching place in it to get a conclusion about why a
handover failed.

Change-Id: Ib6569f7486e9d961bd79a5f24232e58d053667a1
Neels Hofmeyr at
fix: line nr in test name in wrong places

test.Test() overrides name() in order to provide source line number
information. However, overriding name() is the wrong place for that, as
name() is also often used for identifying an object - when listing the
tests of a suite, the line number should not appear in the test name.
For example, the line number sometimes ends up in the test results in
jenkins, making 'foo.py' and 'foo.py:23' two distinct report items.

Instead, add a separate function Origin.src() that defaults to name(),
but specific classes can override src() if they wish to provide more
detailed information with the object name.

Override src() in Test, not name().

Use src() in backtraces.

The suite_test.ok shows that the backtracing in the log remains
unchanged, but the place where the test name is printed is corrected:
   I am 'test_suite' / 'hello_world.py:23'
becomes
   I am 'test_suite' / 'hello_world.py'
(Notice that "[LINENR]" in suite_test.ok is a masking of an actual
number, done within the selftest suite)

Change-Id: I0c4698fa2b3db3de777d8b6dcdcee84e433c62b7
Neels Hofmeyr at
typo / newline in selftest log output

...because it otherwise causes confusing selftest log changes in
upcoming I0972c66b9165bd7f2b0b387e0335172849199193

Change-Id: I1eec31c5baba5ef33d0c8441b1e94a00d79af9bf
Neels Hofmeyr at
do not redirect_stdout in test scripts

In a test, I called print() on a multi-line string and saw the log
showing each line 0.2 seconds apart. redirect.stdout seems to be pretty
inefficient.

Instead, put a print() function into the testenv, to directly call log()
on the strings passed to print().

The initial idea for redirect_stdout was that we could print() in any
deeper functions called from a test script. But we have no such nested
print() anywhere, only in test scripts themselves.

As a result of this, a multi-line print() in test scripts now no longer
puts the log prefix (timestamp, test name...) and suffix (backtrace /
source position) to each single line, but prints the multiline block
between a single log prefix and suffix -- exactly like the log()
function does everywhere else.

I actually briefly implemented adding the log prefix to each separate
line everywhere, but decided that it is not a good idea: in some places
we log config file snippets and other lists, and prepending the log
prefix to each line makes pasting such a snippet from (say) a jenkins
log super cumbersome. And the log prefix (backtrace) attached on each
separate line makes multiline blocks very noisy, unreadable.

Change-Id: I0972c66b9165bd7f2b0b387e0335172849199193
Neels Hofmeyr at
log: process.py: fix weird space in stdout/stderr log output

Log output before:

  stdout:
   | line1
  | line2
  | line3

After:

  stdout:
  | line1
  | line2
  | line3

Change-Id: I4202e7dfbb550acaf55a6c6487fc07819ab18b94
Neels Hofmeyr at
implement test.get_log_output()

Retrieve a test's own logging. The aim is to provide logging belonging
to a given report fragment in the junit XML output, will be used by
upcoming test.report_fragment() feature.

Change-Id: Idfa0a45f3e6a18dd4fe692e81d732c70b5cffb76
Neels Hofmeyr at
add test.report_fragment()

Allow enriching the junit output with arbitrary subtasks within a test.

The current aim is, for handover tests, to not just show that a test
failed, but to show exactly which steps worked and which didn't, e.g.:

handover.py/01_bts0_started PASSED
handover.py/02.1_ms0_attach PASSED
handover.py/02.2_ms1_attach PASSED
handover.py/02.3_subscribed_in_msc PASSED
handover.py/03_call_established PASSED
handover.py/04.1_bts1_started FAILED

In this case it is immediately obvious from looking at the jenkins
results analyzer that bts1 is the cause of the test failure, and it is
visible which parts of the test are flaky, over time.

First user Will be the upcoming handover_2G suite, in
I0b2671304165a1aaae2b386af46fbd8b098e3bd8.

Change-Id: I4ca9100b6f8db24d1f7e0a09b3b7ba88b8ae3b59
Neels Hofmeyr at
report fragment: strip ansi colors from junit XML

Jenkins does support showing ANSI colors on the web, but apparently not
in the junit results output. Strip ansi colors from report fragment
<system-out> text, to make it less annoying to read those on jenkins.

Change-Id: I656ecc23bbfd3f25bdf012c890e0c998168844d3
Neels Hofmeyr at
ctrl: set socket timeout

The blocking CTRL socket must have a timeout.

So far we have always been reading from the CTRL socket in a blocking
way. So far we are always lucky that we are indeed getting a response to
receive. Should the CTRL interface ever fail to answer, the tester would
be stuck infinitely.

Change-Id: I20091daf13981dc3d0d894af5a65c23f4db0471d
Neels Hofmeyr at
ctrl: increment message IDs for CTRL commands

Implicitly use distinct IDs for CTRL commands. This is a prerequisite
for matching GET_REPLY IDs to GET IDs, to correctly handle CTRL
responses without counting on being lucky.

Rather use 'use_id' as var name instead of overloading the 'id' keyword.

Change-Id: I698faa013eb14f88759685d50d925f5d82d80aa0
Neels Hofmeyr at
OsmoCtrl cleanup: get_var(), set_var(), get_trap()

CTRL interface interaction was mostly inherited from the first legacy
implementation of osmo-gsm-tester, and it was a pain to look at from the
start. Now, while I'm close to the topic, I want this to improve:

Properly match a GET_REPLY/SET_REPLY to a sent GET/SET by the message
ID.

Completely drop the do_get() and do_set(), which were not useful for
correct handling of the CTRL request and response messaging. The API to
use by callers is set_var(), get_var()/get_int_var() and get_trap().
These call the internal _sendrecv() (or for TRAP only _recv())
functions. Make it so that tese work both on an already connected
OsmoCtrl, as well as one that needs to establish a (short) connection,
so that both are trivially possible:

    # one CTRL connection stays open
    with OsmoCtrl(...) as ctrl:
  ctrl.get_var('var1')
  ctrl.get_var('var2')
  ctrl.get_var('var3')

and

  # get_var() opens a connection, does the GET and closes again
  OsmoCtrl(...).get_var('var1')

Do away with doubling the instances OsmoCtrl and e.g. OsmoBscCtrl.
Rather make OsmoBscCtrl a child class of OsmoCtrl, which means that we
no longer have bsc.ctrl().ctrl(), just bsc.ctrl().

Have VERB_* constants instead of dup'd strings.

Apply to / simplify all callers of OsmoCtrl.

Some of these changes are similar to recently added OsmoVty.

Change-Id: Id561e5a55d8057a997a8ec9e7fa6f94840194df1
Neels Hofmeyr at
keep Ctrl connections open for bsc, msc and nitb objects

The pattern to use 'with' to keep a CTRL connection open adds indents to
every test script that wants to avoid multiple reconnections to the
CTRL. Instead, keeping a single open connection that is cleaned up on
{bsc,msc,nitb} object cleanup ensures that a) the program started up
successfully and opened a CTRL port, b) always has a CTRL open without
having to worry about it and c) keeps test scripts less
complex/indented/crufted.

(These are all current users of the OsmoCtrl API.)

Change-Id: I53fedbe569c5ccbc4b1a17dafe1f8d1bb8200b24
Neels Hofmeyr at
osmo_ctrl.py: add RateCounters

First user will be the upcoming handover_2G/handover.py test in
I0b2671304165a1aaae2b386af46fbd8b098e3bd8.

Change-Id: Id799b3bb81eb9c04d13c26ff611e40363920300e
Neels Hofmeyr at
add handover_2G suite, with handover.py test

Via VTY, handover two lchans of a voice call from bts0 to bts1 and back.

New scenarios/bts1-* allow selecting various types for bts1,
complementing the already existing files for selecting bts0.

Change-Id: I0b2671304165a1aaae2b386af46fbd8b098e3bd8
Neels Hofmeyr at
run handover_2G in default-suites.conf

Change-Id: Ic6bb013cc2c395211eeb86fe7a3d3f42671793c7
Neels Hofmeyr at
process output: do not leak ANSI colors past logged stdout/stderr

In jenkins, I still saw incidents of the entire log becoming colored
after a colored stderr snippet was printed to the log. Make absolutely
sure that no unterminated ANSI coloring is leaked.

Change-Id: Ib9ac1eea4a12d6d43ac8614491f016bbe9ca17b1
Neels Hofmeyr at
add option osmo-gsm-tester.py --suites-file my-suites-listing.conf

For example, run with '-S handover-suites.conf' to just do the handover
tests.

Change-Id: If896ac84d02a275deda2f20a93c29312df128ebb
Neels Hofmeyr at
OsmoCtrl: use one global common counter for CTRL IDs

It is easier to traverse debugging logs if the CTRL request and response
IDs are globally unique across all programs and tests. Before this, we
were using 0 almost everywhere.

(This is not strictly needed for correctness, since each CTRL client has
its own request ID scope; just we open fairly many separate CTRL clients
all the time in our tests.)

Change-Id: I44c51f4fb5beb6cedf98ea0d6684a24c6aa418c7
Neels Hofmeyr at
sysmocom resources.conf.prod: Update modem paths + add new modems after HW upgrade

Change-Id: I346a5bb38270a32695ec73994179bd75d873b67a
Pau Espin Pedrol at
resource: Fix next_zmq_port_range using bvci file name

Change-Id: I293b7de1066ea69ccb0e495a69602ed56810018d
Pau Espin Pedrol at
sysmocom/resources.conf.virtual: remove no longer existing arfcn resources

ARFCN are not resources anymore since a recent commit.

Fixes: ecce402f43b708bf178d603e2bd8587e72fdb3b1
Change-Id: Icc0971b285e8db085670808b7d7bb98c38db2753
Pau Espin Pedrol at
sysmocom: Port nitb_netreg_mass suite to osmo split network

Change-Id: I221df84d76f73e15eed98036b31adc8089c8dc99
Pau Espin Pedrol at
jenkins-build-srslte.sh: allow custom binaries

this allows to specify the environmental var
wanted_binaries_bin that will be included in the
trial package. if the variable isn't set, all three
main srsLTE binaries are included

Change-Id: I63f5799328435ce32b5bfd6dae6fd0b37e1e5397
andre at
srsenb_drb.conf.tmpl: add QCI1 DRB config

use default QCI1 config for real-time voice traffic

Change-Id: I43f408b1a3c172a5eb8327f03df49801e063e5cd
andre at
enb: include name label and run_addr in enb remote path

this allows to quickly identify the enb host in the logs

Change-Id: I9c979de852a23041e43692e97ebcbfb389b52fdb
andre at
srsue.conf.tmpl: reorder conditions for setting RRC release

the order of checks needs to go from high to low, i.e. the higher
release feature (e.g. qam256) needs to be checked and set first.

in theory it should also be possible to have a CA-capable UE
that does not support QAM256, but for srsUE we announce both anyway.

Change-Id: I2fa49f0cb5d80db412a811ceeb380359c8ad67a7
andre at
intraenb-intrafreq-ho.conf: add eNB to cell config

make sure to have the right eNB that matches the
cells neighbor ECIDs, otherwise the eNB may trigger
a S1 HO if the eNB ID is set elsewhere

Change-Id: Id494ac1984846e78a6456bb6a17e72d63c9dacf5
andre at
srsue.conf.tmpl: disable TTI stats for ZMQ

since ZMQ runs are not using wall clock anyway, measuring
TTI execution isn't useful, disable it therefore to avoid
misleading warnings.

Change-Id: I5c2cb0abcfce0ee67806f6611356f4d5d180541d
andre at
enb_srs: only use QAM64 tables if both UE and eNB are configured for QAM64

this was causing failed tests because to achieve QAM64 rates both
eNB and UE need to support it and have it activated.

Change-Id: I599df92d69eeb56a5d44327de08f004222cff073
andre at
enb_srs: adopt throughput thresholds for QAM256

it turned out that we have to reduce the MCS when using QAM256,
especially for 6 PRB as subframe 0 and 5 contains PBCH and PSS
signals, so the available REs are reduced.

The eNB scheduler now has this limitation in mind and lowers the MCS.

Change-Id: I0e38fe28002fd68c768cc8dcffcf74f4f190df02
andre at
srsepc.conf.tmpl: increase default value of T3413 (paging timer)

we've seen that the default value of 2s might be a bit tight.
the value is network dependent so no real default value exists.
however, 6s seems to be a good compromise.

Change-Id: Icc75ee048c2cc605ab26c4c87a039519998f7e57
andre at
srsenb.conf.tmpl: set nof_of_prach_threds to 0 for ZMQ

this executed the PRACH search in the main thread so
PHY workers and PRACH processing don't diverge in loaded
scenarios

Change-Id: I97eddb5f9ca682251ded1f73093c2d0a49462bd6
andre at
Introduce Android UEs as new modems

To expand the test capacities we would like to introduce
Android UEs as new modems. Currently the following tests
are supported:
- Ping
- iPerf3 DL/UL
- RRC Mobile MT Ping

In the following is a small description.

Prerequisites:
    - Android UE
        - Rooted (Ping, iPerf, RRC Idle MT Ping)
        - Qualcomm baseband with working diag_mdlog (RRC Idle MT Ping)
        - iPerf3
        - Dropbear
    - OGT Slave Unit
        - Android SDK Platform-Tools
  (https://developer.android.com/studio/releases/platform-tools#downloads)
        - Pycrate (https://github.com/P1sec/pycrate)
        - SCAT
            clone https://github.com/bedrankara/scat/ & install dependencies
            checkout branch ogt
            symlink scat (ln -s ~/scat/scat.py /usr/local/bin/scat)

Infrastructure explaination:
The Android UEs are connected to the OGT Units via USB. We
activate tethering and set up a SSH server (with Dropbear).
We chose tethering over WiFi to have a more stable route
for the ssh connection. We forward incoming connections to
the OGT unit hosting the Android UE(s) on specific ports
to the UEs via iptables. This enables OGT to issue commands
directly to the UEs. In case of local execution we use ADB
to issue commands to the AndroidUE. The set up was tested
with 5 Android UEs connected in parallel but it should be
scalable to the number of available IPs in the respective
subnet. Furthermore, we need to cross compile Dropbear
and iPerf3 to use them on the UEs. These tools have to be
added to the $PATH variable of the UEs.

Examplary set up:
In this example we have two separate OGT units (master
and slave) and two Android UEs that are connected to the
slave unit. An illustration may be found here: https://ibb.co/6BXSP2C

On UE 1:
ip address add 192.168.42.130/24 dev rndis0
ip route add 192.168.42.0/24 dev rndis0 table local_network
dropbearmulti dropbear -F -E -p 130 -R -T /data/local/tmp/authorized_keys  -U 0 -G 0 -N root -A

On UE 2:
ip address add 192.168.42.131/24 dev rndis0
ip route add 192.168.42.0/24 dev rndis0 table local_network
dropbearmulti dropbear -F -E -p 131 -R -T /data/local/tmp/authorized_keys  -U 0 -G 0 -N root -A

On OGT slave unit:
sudo ip link add name ogt type bridge
sudo ip l set eth0 master ogt
sudo ip l set enp0s20f0u1 master ogt
sudo ip l set enp0s20f0u2 master ogt
sudo ip a a 192.168.42.1/24 dev ogt
sudo ip link set ogt up

Now we have to manually connect to every UE from OGT Master
to set up SSH keys and verify that the setup works.
Therefore, use:
ssh -p [UE-PORT] root@[OGT SLAVE UNIT's IP]

Finally, to finish the setup procedure create the
remote_run_dir for Android UEs on the slave unit like
following:
mkdir /osmo-gsm-tester-androidue
chown jenkins /osmo-gsm-tester-androidue

Example for modem in resource.conf:
- label: mi5g
  type: androidue
  imsi: '901700000034757'
  ki: '85E9E9A947B9ACBB966ED7113C7E1B8A'
  opc: '3E1C73A29B9C293DC5A763E42C061F15'
  apn:
    apn: 'srsapn'
    mcc: '901'
    mnc: '70'
    select: 'True'
    auth_algo: 'milenage'
  features: ['4g', 'dl_qam256', 'qc_diag']
  run_node:
    run_type: ssh
    run_addr: 100.113.1.170
    ssh_user: jenkins
    ssh_addr: 100.113.1.170
    ue_ssh_port: 130
    adb_serial_id: '8d3c79a7'
  scat_parser:
    run_type: local
    run_addr: 127.0.0.1
    adb_serial_id: '8d3c79a7'

Example for default-suites.conf:
- 4g:ms-label@mi5g+srsenb-rftype@uhd+mod-enb-nprb@25+mod-enb-txmode@1

Change-Id: I79a5d803e869a868d4dac5e0d4c2feb38038dc5c
nils.fuerste at
enb,ue,process: move stdout counter helper to process objects

this patch adds the stdout counter to count events happening
on the stdout (known from the UE already) to the common
process class so they can also be used from the eNB (and other objects)

In addition, we add a PRACH counter to be used for tests.

Change-Id: I434f072b8aa6f4dce9f90889c6b40832f6798ff8
andre at
4g: add checks for received PRACHs for ping tests

the tests already check for sent PRACHs, this will
also check for received PRACHs on the eNB to make
sure we don't detect any fake PRACHs during the tests.

Change-Id: Ib23056b1ad4b18a7dde6cd0c997f5114ac2acb61
andre at
enb: add abstract method stop()

implement as noop for Amarisoft eNB, srsENB will send q+Enter to stdin,
which is implemented in class srslte_common()

Change-Id: Ide606e1a6b523997215aa2fa39d4d56ae1f49181
andre at
enb: Set cipher and integrity via scenario file

This patch enables setting cipher and integrity algorithms
in Amarisoft eNB and srsENB via scenario files. If no
settings are defined following defaults are applied:
- Cipher algorithm: EEA0, EEA2, EEA1
- Integrity algorithm: EIA2, EIA1, EIA0

Example of setting cipher algorithms:
- 4g:srsue-rftype@uhd+srsenb-rftype@uhd+mod-enb-cipher@eea1+mod-enb-cipher@eea0+mod-enb-nprb@6

Change-Id: I595206b7d49016fb6d0aec175c828d9537c53886
andre at
scenarios: remove ncells@ scenario and define number of cells explicitly

the specific cell scenarios files already contain cell-related
information so having a extra ncells scenario seems too much overhead.
furthermore, in more complex tests its helps to reduce the filename/path
lenght to avoid hitting the 255 character limit

Change-Id: If022d9e8d239805ee1280fb52660e68dda7484a0
andre at
srsepc.conf.tmpl: double value of T3413 (paging timer)

we've already incrased the t3413 value in 9c7fd618d226dc532b9408c329cfc2380de4850a
but realized it may still be too low in some cases.

we set it to 12s now.

Change-Id: I9c3c59c0ff8f539a44b420f8ba31eea016c211ce
andre at
srsue.conf.tmpl: reduce nof PHY threads to 2 for ZMQ

we've detected a possible race condition during the Msg3
transmission that caused the thread that sets the Msg3 grant
to be delayed. The PHY worker that executed TTI+2 finished
by that time already and didn't even see the pending UL grant.

This is issue is more likely to happen on loaded system,
for example when running parallel ZMQ jobs. We therefore decided
to reduce the number of parallel PHY workers to 2 so the issue
is circumvented.

Change-Id: Ibdb42a1705d87b6d343201458c8fe397398802bc
andre at
osmo-sgsn: Fix template cfg to work with NS2 implementation

See following HOW-TO to update existing configs:
https://osmocom.org/projects/libosmocore/wiki/Network_service_(NS)

Change-Id: I391c977ca20ef185db6b1f17912608acaa13e87f
Pau Espin Pedrol at
Fix bts.ready_for_pcu() implementation for sysmo and oc2g

osmo-bts.git ae09c8acb4aa93284cdb44f8bbdc14533dc4fa52 modified code to
avoid calling pcu_tx_info_ind() if pcu socket was not connected. Since
osmo-gsm-tester relied on log message sent from within that funtion to
find out whether BTS was able to handle PCUIF connections, that log line
is not printed anymore and hence the function ready_for_pcu() fails to
ever return true.
As a result, gprs tests for sysmo and oc2g bts types always fail with a
timeout.

Other BTS types are not affected (such as osmo-bts-trx) because in there
we simply check whether the osmo-bts process is running.

Change-Id: Ibde4b8b27b8300b4b9197c0f8d82a6ccbf3b0522
Pau Espin Pedrol at

#284 (Oct 21, 2020, 1:11:43 PM)

enb-cells-2ca: fix config to match cell-id and cc idx

add comment explaining how the sceneario can be used.
also adopt cell IDs to match the CC index of the eNB.
This makes sure the cell_gain command of srsENB works with the config.

Change-Id: I1d14485df700ef3ba9220507f72c50b819d5e334
andre at
enb/ue: Assign zmq binding ports dynamically at runtime

ports are assigned increasingly in blocks in the range 2000-2200.

Change-Id: If2abddeb2ad6819de4f3ce64daaf00d2f527f9d2
Pau Espin Pedrol at
ms: Fix and use ms msisdn() getter

The getter method was named the same as the itnernal field, and hence
when used it would fail since the intenral field would be sleect and
fail to be called.

Change-Id: I2f631eb6256eb0e065f41d5b7531395c4a054cd8
Pau Espin Pedrol at
4g: Introduce ZMQ GnuRadio stream broker

srsENB currently creates 1 zmq stream (1 tx, 1 rx) for each cell (2 if
MIMO is enabled). Each cell transceives on a given EARFCN (and several
cells can transmit on same EARFCN).

However, for handover test purposes, we want to join all cells operating
on the same EARFCN to transceive on the same ZMQ conn, so that an srsUE
can interact with them at the same time (same as if the medium was shared).
Furthermore, we want to set different gains on each of those paths
before merging them in order to emulate RF conditions like handover.

In order to do so, a new element called the Broker is introduced, which
is placed in between ENBs and UEs ZMQ conenctions, multiplexing the
connections on the ENB side towards the UE side.

A separate process for the broker is run remotely (ENB run host) which
listens on a ctrl socket for commands. An internal Broker class is used
in osmo-gsm-tester to interact with the remote script, for instance to
configure the ports, start and stop the remote process, send commands to
it, etc.
On each ENB, when the rfemu "gnuradio_zmq" rfemu implementation is selected
in configuration, it will configure its zmq connections and the UE ones to
go over the Broker.

As a result, that means the UE zmq port configuration is expected to be
different than when no broker is in used, since there's the multiplexing
per EARFCN in between.

In this commit, only 1 ENB is supported, but multi-enb support is
planned in the future.

The handover test passes in the docker setup with this config:
"""
OSMO_GSM_TESTER_OPTS="-T -l dbg -s 4g:srsue-rftype@zmq+srsenb-rftype@zmq+" \
"mod-enb-nprb@6+mod-enb-ncells@2+mod-enb-cells-2ca+suite-4g@10,2+" \
"mod-enb-meas-enable -t =handover.py"
"""

and in resources.conf (or scenario), added:
"""
enb:
  ...
  cell_list:
    - dl_rfemu:
       type: gnuradio_zmq
    - dl_rfemu:
        type: gnuradio_zmq
"""

Note that since the broker is used, there's not need for mod-srsue-ncarriers@2
since the broker is joining the 2 enb cells into 1 stream on the UE side.

Change-Id: I6282cda400558dcb356276786d91e6388524c5b1
Pau Espin Pedrol at
ms: Allocate default msisdn internally

Don't wait until adding it to the subscriber data base, since the msisdn
may be needed beforehand (for instance in follow up patch to be passed
to osmo-msc configuration to route emergency calls).

Change-Id: I0d6902687e4beb3d6cdcefd4e343f21496100504
Pau Espin Pedrol at
sysmocom: Introduce suite to test emergency calls

Change-Id: I2e851c94311ded0abd4ff072b8cc72316d972750
Pau Espin Pedrol at
sysmocom: Enable emergency call testing in default-suites.conf

Change-Id: I9524ed9bc4f2d5f8e29313565400e90c64820988
Pau Espin Pedrol at
sysmocom: Introduce test to verify emergency call preemption

Change-Id: I59993e65b3fd34fb2c3e5b002ab9666db9b7bad5
Pau Espin Pedrol at
enb: add basic TDD config option

this patch adds the basic notion of FDD and TDD duplexing modes
to the eNB object. So far we've always assume FDD.

Since only Amarisoft eNB supports TDD, the required config
template changes, etc. are only applied there.

The patch also adds a scenario to enable the default TDD config.

Change-Id: I37216b5bfdf527d221913283b6c41d3c8fd6b500
Pau Espin Pedrol at
mod-enb-cell-2ca: fix EARFCN

this scenario for 2xCA needs to have both cells on different EARFCN

Change-Id: I3cd12da5453aa659839862775e23d4a308b92c8e
Pau Espin Pedrol at
rfemu_gnuradio_zmq: fix amplitude conversion

fix dB to amplitude conversion and adjust max attenuation value

Change-Id: I5a94d5d31e7dc85ab37bd281f95374ad825a41ff
Pau Espin Pedrol at
mod-gr-broker: add scenario to easily enable the GR broker

Change-Id: I4397e26713778721b7138b03b7a5f8f63f780d44
Pau Espin Pedrol at
intra-freq-ho{-sameport}.conf: add scenarios for intra-freq HO cells

we need to use two different configs for Amarisoft and srsENB.
Amarisoft combines the two cells and transmits them on the same
RF port, whereas srsENB sends them on a single port each.

Change-Id: I3a2a8ae7bf4ed2dab6efba8550f442a741ad92e0
Pau Espin Pedrol at
gnuradio zmq broker refactoring

First step towards support everal ENBs and installing the remote script
at runtime:

* The gnuradio broker class is moved to its own file, to decouple it
  from RFemu.
* The ENBs are registered earlier in the test so that the GrBroker knows
  when to start (delay start + setup until all ENBs have been configured).
* Handle ENBs internally as a list.

Change-Id: I4f1095bbc7ed0a816fe47caef44f7becadd9d737
Pau Espin Pedrol at

#282 (Oct 14, 2020, 12:00:52 PM)

contrib: build amarisoft: Set trx_zmq.so RPATH to point to copied dependency libsrslte_rf.so

In the ENB case it's not really required since osmo-gsm-tester makes use
of LD_LIBRARY_PATH. However, since the UE is potentially run with
capabilitites to create tunnels and alike, LD_LIBRARY_PATH cannot be
used and lteue will fail to load trx_zmq.so (because it cannot find its
dependency libsrslte_rf.so).

Change-Id: Ifcbc6ed1c4c465b4cfab4c5689cde44624095f29
Pau Espin Pedrol at
pcu: Improve logging and gsmtap

Change-Id: I506a39b114eed55a185d329cea5e9d6ba379a2ae
Pau Espin Pedrol at
templates: Improve cs7 config in osmo-{bsc,msc}

Change-Id: I0aa0057c85e606d45e67d01b818db7549033bdbd
Pau Espin Pedrol at
amarisoftUE: adding basic support for Amarisoft UE

Change-Id: Idda0d3a040663969dd71781814198b47fff7daf3
Pau Espin Pedrol at
amarisoftue.cfg.tmpl: fix UE bandwidth/rate config and power on automatically

Change-Id: I2d63055d0648a1758905fd277c20edaeec8f9b85
Pau Espin Pedrol at
enb: add measurement modifier to scenario files

this commit adds basic support for configuring measurements in the
eNB config. It currently support A1, A2, and A3 events.
By default UE measurements are turned off and need to be enabled by
configuring an event with:

+mod-enb-meas-event@{name},{report_type},{value},{hysterisis},{time to trigger}

For example one can update the a2 and a3 event with:

+mod-enb-meas-event@a2,rsrq,-40,2,480+mod-enb-meas-event@a3,rsrp,6,1,512

Change-Id: Ia7657be2396886840570bc41645450a268b4cfff
andre at
pcu: Enable 'egprs only' vty option if egprs requested

Change-Id: Idd0b5bf8769d693480268c0a0b89dbfd63779e48
Pau Espin Pedrol at
Move suites/ dir inside example/

example/paths.conf and documentation are updated accordingly.

Test suites should have been moved a long time ago, since the they are
user or setup-specific based on what needs to be tested.

Change-Id: I154b19979b545deba8b232b60172903f63fd9e28
Pau Espin Pedrol at
amarisoft_ue: fix UHD support

the Amarisoft UE seems to be only working with UHD when the bandwidth
param is provided. It seems the set_bandwidth() API is used.

Change-Id: I3f20a5a8ca80c63374f0ad500fd2794e2dc45479
andre at
srs/amarisoft{ue,enb}: Fix b200 specific rf_dev_args

Commit 12ae6d79a5b53a213f619999ef0230c1dae88bb7 switched the rf_dev_type
to be in lowercase but forgot to change these conditions.

Change-Id: I91d3877381b4e6343dc4aa0465e699341ed6648d
Pau Espin Pedrol at
utils/bin: Support passing several bin files to setcap helper scripts

Change-Id: Ifa43f895ae0796d086f35778263aaba07f2e1b7a
Pau Espin Pedrol at
amarisoft_ue: Implement data plane

Use the ifup script to set up the netns + configure the tun device
created by lteue. Use it also as a hook to know when the UE is attached.
Since tun setup is done by arch-optimized lte-avx(2) binaries, we also
need to give capabilitites to them (instead of allowing inheritance of
caps in general in the setcap script).

Change-Id: I1e228b1296eac8e4cb183c2faa735b0468abe124
Pau Espin Pedrol at
pcu_{sysmo,oc2g}: Inherit from pcu abstract class

For some reason these classes were still not inheriting from the base
class (probably because it was added after they existed) and they
started failing after recent changes which presumed they where already
inheriting.

Change-Id: I88217baf490ec45373d0743585377ed2639a8cfd
Pau Espin Pedrol at
bts_oc2g: Fix missing import remote

Change-Id: I318683b8dc6215f5bf863cfb1581e2c3bfa05621
Pau Espin Pedrol at
bts_oc2g: Fix ready_for_pcu() waiting forever

Change-Id: Id33e527591164b87d1e14b7922247b726267ad6e
Pau Espin Pedrol at
Get rid of install top directory

Some content there is out of date, or should be mvoed to utils/ with the
rest of installable stuff.

Change-Id: I17ee94b175deb88faff71e7788c482093693f8a8
Pau Espin Pedrol at
Move example/ and ttcn3/ to sysmocom/ and sysmocom/ttcn3

This content is mostly specific to sysmocom's setup (thought it can
still be re-used by other people if willing to).

symlinks in ttcn3/ pointing to example/ are redone to point to
sysmocom/.

Change-Id: I364e0859c0851b9167907a4d948b659a0f6a19fb
Pau Espin Pedrol at
Introduce doc/examples/ directory

It contains simple usual setups to get started with osmo-gsm-tester,
such as creating a 4G network using srsLTE or a 2G network using the
osmocom stack (+ ofono modems).

Change-Id: I55d5b1152da201799af21a77ef6c562f97bd94fc
Pau Espin Pedrol at
Rename object classes to be {obj_class}_{implementation}

Change-Id: Ieafd96d7ee5b4baef08ca767629b93834f6a8c7c
Pau Espin Pedrol at
Create core directory to contain most of code not in object classes used by tests

Change-Id: I9aec6c55ccd71894182057d36e0025b69925d314
Pau Espin Pedrol at
Move object classes used by tests into obj/ subdir

Change-Id: I0b2963cf00acd1f9036dca2e87aa3b87a0f8066d
Pau Espin Pedrol at
Rename modem.py to ms_ofono.py

Change-Id: I050970986b0b3fbc23b756c5b7c524cb8b7c1327
Pau Espin Pedrol at
iperf3: Avoid using --logfile arg

Some older iperf3 versions don't support the --logfile arg. Let's
instead parse the json from stdout. Old --logfile behavior is left in
code but disabled since it's a nicer (less hacky) way to get results,
because parsing from stdout means we need to avoid reading some content.

Change-Id: Ia1b7fa4dae074089878963aeddf0006aea68e31f
Pau Espin Pedrol at
enb_amarisoft: fix enb conf template name

issue has been introduced during refactor of enb class names

Change-Id: Ib3ad6451c3979440be28d8811f51ce5d1c103518
andre at
enb_srs.py: Pass filenames to main cfg file template instead of cmdline args

Change-Id: Ifec6a8a9c29b94634f6ac7ea50aae9b8e18ae3cb
Pau Espin Pedrol at
epc_srs.py: Pass filenames to main cfg file template instead of cmdline args

Change-Id: I1ac3a3cace7ec2b0f85c5d9a5f97d5007d7c65ac
Pau Espin Pedrol at
ms_srs.py: Pass filenames to main cfg file template instead of cmdline args

Change-Id: Id2a6ba17d087d2ff67fe10b1dae6434259e74366
Pau Espin Pedrol at
enb: add optional gtp_bind_addr paramter to enb class

this allows to optionally specify a the GTP bind_address for a enb object
in the resources.conf

this address is then used for binding the listening socket for gtp connections
which, in turn, allows to run the enb and epc on the same host.

when gtp_bind_addr is not specified, addr is used by default

this is especially useful if eNB and EPC run on the same host
and ZMQ is used for RF between eNB and UE. Two eNB addresses
are needed in this case, one bind address and one "remote-accessable"
address for the UEs ZMQ radio to connect to

Change-Id: I4fe38f31401428ed3e74e1d0b64960f0af122d37
andre at
powersupply: Import sublcass module only if used

This way we avoid unconditionally importing all subclass dependencies,
and make them optional based on whether the setup has devices of that
type or not.

Change-Id: I0d2f8b26364b45f0d837cc51078784d1d0fa7ea1
Pau Espin Pedrol at
check_dependencies: Import modules dynamically and find related debian packages

This way we don't need to manually add new imports here or drop unusued
ones. It also makes sure local imports in all our py files is correct.
For instance, running the script already caught an issue which is added
to this patch (osmo_ms_driver/__main__.py).

This new version of the script also allows specifying subsets of
features to skip when checking for dependencies. This way, for instance
somebody not willing to use a sispm powersupply can stil check all the
needed dependencies are fine.

This new tool will make it easier to slowly make some dependencies only
used by some object test classes optional (for instance, python-smpplib
if user doesn't want to run an ESME node).

It also allows to retrieve the required debian/manually installed
packages when run with "-p" option:
"""
Debian packages:
        libpython3.5-minimal:amd64
        python3-gi
        python3-six
        libpython3.5-stdlib:amd64
        python3-pygments
        python3-yaml
        python3-mako
        python3-numpy
        python3-markupsafe

Modules without debian package (pip or setuptools?):
        usb                  [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/usb/_interop.py]
        pydbus               [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/pydbus/proxy.py]
        smpplib              [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/smpplib/command_codes.py]
        sispm                [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/sispm/__init__.py]
"""

Change-Id: I29ddf8971837754abd930d847bd1036e8e510de6
Pau Espin Pedrol at
enb: Add cell_list attribute

It allows configuring each cell_list up to a maximum of 'num_cells'.

Change-Id: I4fd30a3e37789b76bfaddc2beba1815154daab7f
Pau Espin Pedrol at
powersupply.py: Fix import module line typo

Recent commit changed the import line so it runs only when required, but
added a typo making tests uing it fail.

Change-Id: Id3e5c16adc763a9b79cc464937c541abd15f98de
Fixes: 2b959580b9affe729e966c506656b7f47926c4bf
Pau Espin Pedrol at
srsenb_rr.conf.tmpl: Fix whitespace

Change-Id: Ic2b4d8e2468984b096a870c878fa5d032ea4130f
Pau Espin Pedrol at
enb: Implement initial RF emulation API

Two implementations are provided:
* Amarisoft Ctrl interface (websocket)
* Mini-Circuits Programmable Attenuator (HW, HTTP API) [1]

in Amarisoft ENBs, if no rfemu is configured explicitly, the Ctrl
interface one is used by default, while still being possible to use the
HW one.

[1] https://www.minicircuits.com/pdfs/RC4DAT-6G-60.pdf

Change-Id: Ie98a3fb9bcd2b87b96ecbb5b79e0f53981892a32
Pau Espin Pedrol at
enb: Add attribute to set 'id'

Change-Id: I8ce296c7875d557062dc13e7093ce0400050f2ce
Pau Espin Pedrol at
srsue, amarisoft/srsENB: Support setting rx/tx_gain attributes

Change-Id: I4228ba8746a54db4c17443718c01069d431361b9
Pau Espin Pedrol at
AmarisoftUE: Fix setting tx/rx gain attr

Fixes: a6d6304afccbd37462acf9ad8207d6ac29f25da9
Change-Id: I344313863390a00604045dcc18e552aa789b282f
Pau Espin Pedrol at
AmarisoftENB: Support setting PCI value

Change-Id: Ibffb95f9b55e145d76ba64119a73ef9f1ed7cdef
Pau Espin Pedrol at
enb: Introduce support for neighbour cell list

Change-Id: If604f1f2643a73f8c4da6ae3e9d24cd6c7e52d06
Pau Espin Pedrol at
srsenb: Support neighbour and secondary cell lists in config file

Change-Id: I8fe0703b7d9db69658c112066404d2da1c3d1e09
Pau Espin Pedrol at
amarisoftENB: Fix running with num_cells=2

The B200 device being used in the physical setup doesn't support several
RF ports, so let's hardcode it to 0 for now.

Change-Id: Id4c31be2bd0c75f469e2293ade011c7b7ceedb1c
Pau Espin Pedrol at
jenkins-build-amarisoft: turn off other RF libs when building for zmq driver

Change-Id: Ie4819d3f454d74e14829d02fbdc62a12f2d54cd5
andre at
jenkins-build-common.sh: also pass additional build flags to CMake

Change-Id: I1c5998d31201505d0a2532f22f905ec155d6c094
andre at
amarisoft_enb: use two antenna ports for TM > 1

Change-Id: Ia241f96341780760d482d389097659b0f7b897e8
andre at
enb: refactored rf_args handling for ZMQ-based radio

this patch moves the rf_dev_args creation for both eNB types
into the eNB base class, since they are identical.

the patch also fixes the arguments for all CA and MIMO configurations

Change-Id: I8ca3ed83e65dc07927385267e5970bc4f5b120d5
andre at
ms_srs: fix ZMQ radio arguments for CA and MIMO configs

similar to the eNB patches this fixes the CA and MIMO radio
parameters. In pricinple this could also be reused for the
AmarisoftUE but since we currently don't have a means to test
it I left it for a future commit.

Change-Id: I16b00009f97d61a9ab4715e5d727024661d3d0be
andre at
srsenb_rr.conf.tmpl: extend CQI and SR subframe scheduling

this fixes an issues when allocating CQI resources for multiple carriers
or multiple users

Change-Id: I8b9345502003da2f5b6841a98b77375656e84d8c
andre at
Generate schemas dynamically from pieces provided by each object class

This way we benefit from:
* knowing which attributes are used/required by each object class and
  subclass
* Having validation function definitions near the class going to use them

Change-Id: I8fd6773c51d19405a585977af4ed72cad2b21db1
Pau Espin Pedrol at
Move object subclass instance allocation logic out of suite.py/resource.py

This way we get rid of object related content in resource.py and we can
finally move it to core/ in next commit.

Change-Id: Ia5b861115ae3ae1b90149863c4265dcc730b8cd4
Pau Espin Pedrol at
Move resource.py to core/

Change-Id: I0f36a5e61ff0ef14d08165c9c184acdf2d6e6901
Pau Espin Pedrol at
Move test.py and report.py to core/

Change-Id: Ibb7fa5ab40bcf1e59705bdd2c2c5a76025b2b544
Pau Espin Pedrol at
Move all obj/ references in suite.py to testenv.py

Change-Id: If4ab39be7a97d33e82c5a34e2a10dfec38613a4e
Pau Espin Pedrol at
Move trial.py and suite.py to core/

Change-Id: Ic9a4c90c190e9d8e1829fbef83a9243f3c6f655b
Pau Espin Pedrol at
Update obj classes in obj/ to use testenv instead of suite_run

Change-Id: Idf41243a497de7bc507b9f1cd1b38640f456f815
Pau Espin Pedrol at
tests: Replace 'suite' with 'tenv'

Change-Id: I777ec59ffd83b861ddc09e85e52d7a8896264b8c
Pau Espin Pedrol at
testenv: deferr importing obj module class until use is required

Change-Id: Ie073256a03bb2d038ef7f715d534afb1c53bb241
Pau Espin Pedrol at
check_dependencies: allow passing any module name to skip

Change-Id: I53a384d54f32d766f70bd7e0bfbd9702939c8aa8
Pau Espin Pedrol at
ms_srs: import numpy module on first use

Change-Id: I2ce974954028bdbc7bc1561c4538b909edee2cb1
Pau Espin Pedrol at
esme: import smpplib module on first use

Change-Id: Icc92937fdada9210f788805dbc42b80014e345e8
Pau Espin Pedrol at
ms_ofono: import pydbus and GLib modules on first use

Change-Id: I754e1290eb5593c0ef168f74747f42db1b50f16c
Pau Espin Pedrol at
powersupply_sispm: import sispm and usb modules on first use

Change-Id: I6045bb739e5c69972014a9d27be3a24b7ad61c9a
Pau Espin Pedrol at
rfemu_amarisoftctrl: import websocket module on first use

Change-Id: I568af52ffb7ac57222697f5d861a532c0e2a70de
Pau Espin Pedrol at
doc: Drop redundant app-name in install section

Change-Id: I6ec3c42efd3eb958f832ff9a797ddaa3dae4a99a
Pau Espin Pedrol at
doc: install.adoc: Correctly split optional dependencies

Change-Id: Id8b5dcd15fd86c670915b928112699d831e6e7b0
Pau Espin Pedrol at
Rework README file

Drop old one in doc/ which contains lots of outadated stuff already
placed in the User Manual.
Write a new markdown README in the root directory with pointers to
places in the repo and the issue tracket, ansible setup, etc.

Change-Id: I9febe56223eaeadc9d31291dd0110a11470e3ab1
Pau Espin Pedrol at
osmo-gsm-tester.py: Fix import error when using default-suites.conf

Recent commit refactoring stuff introduced an import error only
triggered when default-suites.conf is used (no -s param).
This commit fixes the issue.

Fixes: ea8c3d4b1235ef703e54cd963bc96f6716168387
Change-Id: I1534cfba55c69ed5c1354175f8b5df9b656b7d82
Pau Espin Pedrol at
suites/4g: Introduce sample handover test

This test currently only works with AmarisoftENB and srsUE, because:
* srsENB has no handover support yet
* AmarisoftUE doesn't provide any known way to verify handovers.

As a result, it usually runs with following filters and modifiers:
amarisoftenb-rftype@uhd+srsue-rftype@uhd+mod-enb-ncells@2+mod-enb-meas-enable

The get_counter() API may change in the future based on information
available from other implementations.

Change-Id: I0dff4af7e3a89804a03842ad4a4d697bca3a9773
Pau Espin Pedrol at
selftest/trial_test: Fix repr(RuntimeError) changing in new python version

If using python 3.8.2, the trailing comma at the end of parameters is
not longer there (probably got fixed, since it's not needed). That
change breaks expected output.

Change-Id: I6da3024f946c0e761099058e812c0eacf3d6071f
Pau Espin Pedrol at
selftest/process_test: Fix output changing in new python version

On older versions apparently upon child termination due to SIGINT
subprocess.poll() returned 1. On new python versions (such as 3.8.2),
-2 is returned, according to documentation:

A negative value -N indicates that the child was terminated by signal N (Unix only).

Let's catch the SIGINT in the child process and exit with a known 42
value to fix different behavior.

Change-Id: I7949ff2b435e91e890061e6840b0f411f8b0a817
Pau Espin Pedrol at
selftest: Remove unused misc.py file

Change-Id: I167bce29d7b22956c82053dcae5634c23d405b3f
Pau Espin Pedrol at
selftest: Move tests into own subdirectories

Change-Id: Id21cda19df131e24402e1a593036e1e33a914920
Pau Espin Pedrol at
schema: Allow keys to start with a number

YAML allows it, and it will allow suites tarting with a number on its
name (like the '4g' one) to register its own schema on next commits.

Change-Id: I64e5a9d6604085d3b17eba30498a5e7a66242cc8
Pau Espin Pedrol at
enb: add rf_port to cell list param

we need to make the rf_port a param in the cell list because for CA with
two cells on different EARFNCs, the RF port is different

for two cells without CA on the same EARFCN the RF port is the same

so we need to be able to configure it

Change-Id: I32e83cc34811588757104c5ce1cae7277402addd
Pau Espin Pedrol at
srs_{enb,ue}: don't set sc12 as OTW format

Change-Id: I7fc20d998b082f5c37b2451f1900161f997954b1
Pau Espin Pedrol at
Makefile: Add manual target to build user manual

Change-Id: I61ff89db5666248de47cb9752a2aecdd6fd06f02
Pau Espin Pedrol at
Makefile: Implement clean target

Change-Id: Ia21b0f184bfd454b3835774949f581a27860a80a
Pau Espin Pedrol at
Allow suites to dynamically register schemas so tests can receive parameters

Change-Id: Idbe99a35993d193cd97059feb980e61ff14c67ad
Pau Espin Pedrol at
suites: 4g: Parametrize handover.py test

Change-Id: I7de5acdaa6b905e52655786758bd51490add1d2b
Pau Espin Pedrol at
ms_driver: Fix typos after recent refactorings

Change-Id: Id9709743648d60792ec64c97ab1bc6811c4e3e1e
Pau Espin Pedrol at
Deprecate envvar OSMO_GSM_TESTER_CONF and remove other ones

Environment variable OSMO_GSM_TESTER_CONF is marked as deprecated and an
error is logged each time it's used. Same feature is available through
"-c" command line parameters, so having the envvar only makes things
more complex for no good reason. It cannot yet be completely dropped
since some environemnt still make use of it. Give some time to users to
adapt their setups.
Other environment variables setting some config apths can be dropped
since they are not being really used in any setup.

Change-Id: I7eb69f870d0dcb5906d45ae067d6bed1aabf5862
Pau Espin Pedrol at
osmo-gsm-tester.py: Update help description and remove old nope cmdline arg

Change-Id: I879a5c30c185905614c2c5a7d54eb33817c94c31
Pau Espin Pedrol at
obj: Fix objects placing their content in suite rundir instead of test rundir

Change-Id: I421d35473575086b93d5c8db98b909cc6c83d896
Pau Espin Pedrol at
suites/gprs: Catch unexpected iperf3 result content and print it

Change-Id: I10f7f682da023f5e05e461b73f55cc50c5f36f79
Pau Espin Pedrol at
ms_srs: fix numpy import

numpy is used in a few places in the class code so we need to jhave it
available in a bigger scope, while still only loading when needed.

Change-Id: Iea66e623e1c980a62d691e20dacb00df99fdd78f
Pau Espin Pedrol at
esme: fix smpplib imports

smpplib modules are used in several places, so it's not enough to import
them in the constructor since they are only imported for the function
scope.

Change-Id: I6511e28c7ef6aa86e85a7e03aa10a67d87896588
Pau Espin Pedrol at
Split Scenario class to its own file

Change-Id: Ia029de7ecda4c8dc3d0b4c412e4c9c0a65cf0185
Pau Espin Pedrol at
selftest: Introduce scenario_test

This covers some unit tests for scenario module (Scenario class).

Change-Id: I4c80047bb03ae8254c192057007fa7df84478605
Pau Espin Pedrol at
Cmdline arg -c sets main configuration file (old paths.conf) instead of dir containing it

It has been notified that current configuration system is difficult to
understand and to use, so it has been envisioned to refactor it a bit.
The idea is that the user passes a -c path/to/main.conf file, which in
turn contains whatever osmo-gsm-tester main settings supports (basically
what old paths.conf used to be, plus some files harcoded to the same -c
directory are now configurable through the main configuration file).

Change-Id: Ieca65b71b543c44cfcec8e83efd0fe053c432e55
Pau Espin Pedrol at
doc/manuals: Swap order of schemas and config files

First explain the different config files and directories, later describe
the schemas used in each of them.

Change-Id: Iaf31808a655a5c77a1dfaa155e86d42585130820
Pau Espin Pedrol at
Move check_dependencies.py to contrib/

Change-Id: I8def867b1042cbb98bb36ff4a473b4cdb92ce122
Pau Espin Pedrol at
Move update_version.sh to contrib/

Change-Id: I26218cd512a739fc26ba04be05f01260152d785f
Pau Espin Pedrol at
config: Allow setting trial directory in main.conf

Change-Id: Ia4141001d084f690897dbdff5eae6c69ff2e521c
Pau Espin Pedrol at
ms_srs.py: Fix typos in comments

Change-Id: Iaa09ed696eb58e63c366f26e94c66f27b5f733bf
Pau Espin Pedrol at
schema: Allow objects registering their own schema types

Change-Id: I998c8674a55531909bfeac420064c3f238cea126
Pau Espin Pedrol at
iperf3: Support using configuring UDP protocol

Change-Id: I0b3545847b01ae3d029881f243fea276f0fa39de
Pau Espin Pedrol at
config: suites_dir and scenarios_dir are now a list of paths

This allows inheriting suites or scenarios from eg. sysmocom/ dir, while
still allowing to apply new suites and scenarios on top.

Change-Id: Icecdae32d400a6b6da2ebf167c1c795f7a74ae96
Pau Espin Pedrol at
iperf3: Support runing test with bidirectional data

Change-Id: Ia6f12c65fd3ea26d412997741cb8685a9646af43
Pau Espin Pedrol at
4g: Pass max bitrate to iperf3

Otherwise bitrate 0 (unlimited) does weird stuff, like iperf3 hanging
forever in DL.

Change-Id: I631243cce132923d9024f8161cf96161c51cdae5
Pau Espin Pedrol at
Replace RemoteProcessFixIgnoreSIGHUP with RemoteProcessSafeExit

The API was doing far more stuff than its name indicated. Even more
important stuff, like making sure the process is killed at the end with
-9 after ssh connection is dropped.

Change-Id: If043ecab509b34b0922824d73db916196274ec64
Pau Espin Pedrol at
enb_srs: Use RemoteProcessSafeExit instead of RemoteProcess

It is known that sometimes srsENB hangs until it is killed -9, specially
when using ZMQ backend. Let's use RemoteProcessSafeExit in order to make
sure it is killed in an acceptable time (srs binaries use some
preventive sigalarm 6 seconds auto-kill procedure, hence we use 7
seconds) before next test is started and potentially try to re-use the
same ENB and fails due to previous one still running.

Change-Id: I905bd753c7822feccf1c1bb59752698f1d1b85f0
Pau Espin Pedrol at
process: Log stdout tail when process exits with error

This is useful since remote processes we run under ssh end up merging
both remote stdout and sterr into local stdout.

Change-Id: Ibbfb099a667f21641075faa1858e0b9acd706fd2
Pau Espin Pedrol at
ms_srs: add max rolling average as metric operation

this allows to calculate the rolling average over a specific
window in time and take the maximum of that

this is useful to get average value for 30s UDP traffic for
example from the UE metrics

Change-Id: I34bbfe08dbc1f27b86c9805f54649d44d697fa18
Pau Espin Pedrol at
ms_srs: allow + operator when specifying CSV columns

this allows to sum dl_brate and ul_brate and perform
the known operations, like max, average, etc. on both
UL and DL bitrate combined

For examples, with this CSV ..

time;cc;pci;earfcn;rsrp;pl;cfo;dl_mcs;dl_snr;dl_turbo;dl_brate;dl_bler;ul_ta;ul_mcs;ul_buff;ul_brate;ul_bler;rf_o;rf_u;rf_l;is_attached
1999;0;1;3400;-67;59;913;27;29;0.50;10432.000000;0;2.6;20;0.0;10848.000000;0;0.0;0.0;0.0;1.0
2998;0;1;3400;-67;59;912;28;29;0.50;2136.000000;0;2.6;20;0.0;1680.000000;0;0.0;0.0;0.0;1.0
3997;0;1;3400;-69;61;909;28;29;0.50;2136.000000;0;2.6;20;0.0;1680.000000;0;0.0;0.0;0.0;1.0

.. one could calculate the average of DL and UL bit rate with:

ue.verify_metric(1e6, operation='avg', metric='dl_brate+ul_brate', criterion='gt', window=test_duration)

and veriy that it's average is greater than 1 Mbit/s

Change-Id: I5c7c80bb107fa6b93b215176e6ebbb5dc8594860
Pau Espin Pedrol at
enb: fix UL max rate calculation

don't double the maximum rate for UL traffic in MIMO since
we are only using MIMO in the downlink

Change-Id: I018e8ba8cb822a4bd57b8d0e420dd496172ac229
Pau Espin Pedrol at
ms_srs: wait 6s after stopping srsUE

we've only waited when running with ZMQ but in fact we need
to always wait because the UE may need some time to
gracefully exit, i.e. send the detach request and shut down correctly.

this is checked in cleanup() and verity_metrics(), so also before copying back
the CSV metrics. But we only wait once.

Change-Id: I47e46b8ccce41c9a62d2d6866260d22c927e710d
Pau Espin Pedrol at
Fix processes run with RemoteProcessSafeExit not receiving stdin

Since the process is run in the background through the wrapper bash
script, stdin was disabled there. By explicitly redirecting the bash
process stdin we make sure it is always able to read from it.

Change-Id: I6cb7979aae0a7457919f353cbeb4c3b78cdd4919
Pau Espin Pedrol at
Support identifying different tgz files based on run_label attribute

tgz files in trials can be categorized in subdirectories, allowing to
select different bianry files at runtime based on the target run node
which is going to run them. This way for instance one can have a binary
linked against libs for eg. CentOS under run_label "centos/" or an ARM
target under "arm", and then use "run_label: arm" on the resource using
it.

Change-Id: Iaf2e97da3aff693395f44f0e93b184d4846cf6da
Pau Espin Pedrol at
epc_{amarisoft,srs}: Support selecting tgz based on run_node's run label

Change-Id: I90b8dab8bdc9980a7d2486d890cff183c07f1809
Pau Espin Pedrol at
enb: Reuse run_node to hold run info

Change-Id: If396940f154813d42ff3d3364c44b8979179127f
Pau Espin Pedrol at
ms_{srs,amarisoft}: Reuse run_node to hold run info

Change-Id: Ifdea48fed0bfc152131c53b87c34b4514c632917
Pau Espin Pedrol at
enb_{srs,amarisoft}: Support selecting tgz based on run_node's run label

Change-Id: Ie1c8ccd2ffc9680bd72159872f3de0d59f1b9b0b
Pau Espin Pedrol at
ms_{srs,amarisoft}: Support selecting tgz based on run_node's run label

Change-Id: I2c4cab02fa34c7acc7e57c3fec5a42c26d2a9208
Pau Espin Pedrol at
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
andre at
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
andre at
process: Fix wrong use of log.ctx(self)

That's not needed and will produce some parent loop detection in
log.find_on_stack() if logging is called under that stack frame.

Change-Id: I4ab7e8977fa9bad5c8956b7c1df1513b27bb5aa2
Pau Espin Pedrol at
log: Improve log ctx information in log.Error exception

Before, it would show somethig like:
"""
osmo_gsm_tester.core.log.Error: Exited in error 255
"""

Now:
"""
osmo_gsm_tester.core.log.Error: rm-remote-dir(pid=24820): Exited in error 255 [trial↪4g:srsue-rftype@zmq+srsenb-rftype@zmq+mod-enb-nprb@6↪ping.py:9↪ping.py↪srsepc_10.42.42.118↪host-jenkins@10.42.42.110↪rm-remote-dir(pid=24820)]
"""

Change-Id: I8873f67a2f3df21c4dd552c92510535bf95e2c9d
Pau Espin Pedrol at
process: Improve launch_sync() exception due to process failing

After this commit, in some situations ssh related errors are printed
directly in the exception to quickly find cause of the issue.

Example:
    FAIL: ping.py (5.0 sec) Error: rm-remote-dir(pid=25913): launch_sync(): local ssh process exited with status 255 (ssh: connect to host 10.42.42.110 port 22: No route to host) [trial↪4g:srsue-rftype@zmq+srsenb-rftype@zmq+mod-enb-nprb@6↪ping.py:9↪ping.py↪srsepc_10.42.42.118↪host-jenkins@10.42.42.110↪rm-remote-dir(pid=25913)]

Change-Id: Ia16c7dec96f70d761600ad6a50d9df8382d9c2c8
Pau Espin Pedrol at
testenv: Get rid of 'resources' global variable

Change-Id: Id7576d21d0f9de29dd9bc4211eaf9b9ec634c990
Pau Espin Pedrol at
selftest: template: Test existing overlay dir features

Change-Id: Iff1a4dafcbf2193e95b1fb6e5a6712f1bcdd6309
Pau Espin Pedrol at
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
Pau Espin Pedrol at
doc: manual: Write initial Test API section

Change-Id: I86bc9a8a0b5ff50e72c21a4bd8a857830bd84c4c
Pau Espin Pedrol at
report: Add trial name to junit 'testsuites' node

Change-Id: I8cd62484bb67756e3d98d43a75731f4702acd2b7
Pau Espin Pedrol at
report: Add trial commit info to junit file

Change-Id: I997bbbeb3807af5cd927594a4155b824f0c6d03d
Pau Espin Pedrol at
Fix ttcn3 testsuites after recent refactors

Change-Id: I545e3141ef56980e4ef2474b990bd4e4d4c21322
Pau Espin Pedrol at
sysmocom/ttcn3/jenkins-run.sh: Pass confg file as cmdline

Fix after recent huge refactoring.

Change-Id: If0bcc9f7cb70e4ef324b3295d2174d11982a4bde
Pau Espin Pedrol at
amarisoft_enb: fix RI config

this cause all MIMO modes to fail because RI reporting was disabled

Change-Id: Ic25233cf7feb4ded8b3d0f440191cc958d8bc0ec
andre at
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
andre at
epc: add run function to EPC

this allows, for example, to run a ping originating from the core to the UE

Change-Id: Id86c61cbccd41b77f94f125d8d127e2ab5e46cd9
andre at
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
andre at
srsenb_sib.conf_tmpl: fix whitespaces

Change-Id: Ifbd3c8bd97d7e2d3f165e88f3358dce9e7e33067
andre at
srsenb_sib.conf.tmpl: increase default T311 value to 10s

this matches the default of Amarisoft eNB so tests can use the same values

Change-Id: Ic81fb6428751305d8b37a25bddb0d018ca6f51f6
andre at
srsenb.conf.tmpl: reduce RRC inactivity timer to 5s

the default value of 60s is too long to trigger errors in the handling
of this timer. So a 5s timer is more likely to reveal potential issues
during the test execution

Change-Id: Id7a6739487c7875c4f26a47d05978c9ea9f33873
andre at
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
Pau Espin Pedrol at
4g_suite: add MT and MO test cases

add two new test cases to test paging (MT) and MO traffic

Change-Id: I5c7639f2c6953964a5b6979bc35f59464dbda43f
Pau Espin Pedrol at
handover.py: fix typo in test

Change-Id: I9a52a341d7575807d3e52460e1aa24732e3b3112
Pau Espin Pedrol at
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
Pau Espin Pedrol at
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
Pau Espin Pedrol at
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
Pau Espin Pedrol at
doc/manual: Fix links to nonexistent sections

Change-Id: I8742fa9c41d3ab95d41e299179df19c3d1e0a65b
Pau Espin Pedrol at
tests: Replace is_connected() with is_registered()

API was renamed and old name deprecated, let's use it everywhere.

Change-Id: Ic91dddcfd1a5a17c35d15a8a14628b3923229523
Pau Espin Pedrol at
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
Pau Espin Pedrol at
ttcn3: Don't overwrite output junit file on multiple testsuites

Change-Id: I803fa8766acb4e90c4a735a420b24ef18ef6b0c9
Pau Espin Pedrol at
log: Fix OriginLoopError generated in log.Error from testenv.poll()

Change-Id: Iea80d06a30346533e4ecec338b03c72d1f1067ae
Pau Espin Pedrol at
amarisoft_enb: Properly set S1AP SCTP bind ip addr

Change-Id: I8e2b8609cb198c6d5e293cffaa0a9de99600f06d
Pau Espin Pedrol at
testenv: Add debug log when overlaying templates dir

Change-Id: I10fdfc5b2e3bf4c96941a3fae53230131f384de9
Pau Espin Pedrol at
suites/4g: Wait for IP addr received before trying to use the link

Otherwise processes using the link like "ping" or "iperf3" may fail
because there's still no IP address assigned.

Change-Id: I28137f10a19db01fe90b24830a60342a448d1e92
Pau Espin Pedrol at
test: Store brief log per test and use as default report_stdout

Change-Id: I0972ba56a42c24f3d3b1bc94bcbdaca86026046a
Pau Espin Pedrol at
srsenb_sib.conf.tmpl: add default SIB3

if SIB3 isn't transmitted, the UE won't do HO and cell reselection

Change-Id: I329a59d9d0fa3b25bc00b760a455eadbe0b7220f
andre at
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
Pau Espin Pedrol at
Remove all references to defaults: timeout: from suite.conf

This feature is not really implemented and maybe never was. In any case,
it makes sense to have that working per-test so we can specify different
values per test in case it's needed.

Change-Id: I3c1b95c10e974da87ec9abd25578d8bcc0bc55a3
Pau Espin Pedrol at
test: Move duration time calculation to helper function

Change-Id: Ica2e7d92f37d18a4f8832f38d9f9f3baba8be09f
Pau Espin Pedrol at
Refactor test specific config parsing & generation

The dictionary is generated once during test creation at suite startup.

Change-Id: I4de511d64ccf65d2ec6eec45dcf28529b74c5d26
Pau Espin Pedrol at
Implement per-test timeout guard

Timeout value can be specified by test in suite.conf:

config:
  suite:
    <suite_name>:
      <test_name>:
        timeout: 2 # 2 seconds timeout

Change-Id: I522f51f77f8be64ebfdb5d5e07ba92baf82d7706
Pau Espin Pedrol at
testenv: Prepend underscor to internal method

Change-Id: I2297f4b44d6f0c88409ab6982de4e3640a6a48b2
Pau Espin Pedrol at
config: Allow empty config files

Change-Id: Ic010e06220421df00405c5b6f5ad2e83514b6dcd
Pau Espin Pedrol at
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
andre at
enb_amarisoft: fix typo

Change-Id: Ie898da5eae10af96c2bca6c2413bdff4a5160e9f
andre at
rfemu: add max attenuation getter

this allows to query the maximum channel attenuation from within a test case

Change-Id: I35f7cb188790c59bbf2450f78c663fbc9440e406
andre at
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
andre at
amarisoft_drb.cfg.tmpl: adjust default values for QCI 1 and 2

use more realistic values for QCI 1 and 2 bearers to prepare
QoS operation

Change-Id: Ibfffde9ecccd473f22e816bd47e197fbe24b0ded
andre at
srs: Convert additional_args attr to list to allow combining different params

Change-Id: I4b371332cd6fbe11b98c85c79a6f8fdcc776a57b
Pau Espin Pedrol at
selftest: Add test to verify junit xml report

Change-Id: I8cad02abe776cc00b513113dbaf3c948ea7956cd
Pau Espin Pedrol at
Add per-test KPI support

tests can now use 'tenv.test().set_kpis(some_dict)' to set any kind of
data as KPIs, which will be presented in the junit report.

The representation of KPIs in the xml file doesn't follow the junit
format, mainly because it has no support for per-test properties.

Change-Id: I00e976f65a202e82d440bf33708f06c8ce2643e2
Pau Espin Pedrol at
ms_srs: fix additional_args init

regressions after porting to list. init to new empty list

Change-Id: I06f370462934ca35f3aa13bbfcd9e5fc3df91895
andre at
iperf3: Refactor iperf3cli popen arg list generation

Change-Id: I10ab737e1317a52b6ccbd0de2470a9cf0c90c934
Pau Espin Pedrol at
iperf3: Add support for setting TOS

Change-Id: I3ccc249ad1c9598c606303c52eff6823f45afa7b
Pau Espin Pedrol at
doc/manuals: Fix callout definition in code block

Currently osmo-gsm-tester master jenkins build fails while building
manual due to errors like:
"asciidoc: WARNING: test_api.adoc: line 42: no callouts refer to list
item 1"

According to asciidoc documentation in [1], code examples can be
annotated with callouts, but callouts need to be put inside source code
comments.

[1] http://www.methods.co.nz/asciidoc/chunked/ch20.html

Change-Id: I2213874592342b12adf7440b25edc706abfc78ba
Pau Espin Pedrol at
amarisoft_enb.cfg.tmpl: expose log options

this allows to alter the log options through a modifier

Change-Id: Iecd24afe6b242fbebc8463c9e1fa1c3b60b27d01
andre at
ms_osmo_mobile.py: Fix missing sublcass implementation of abstract MS methods

Change-Id: Icddab08c84ef97924d10801d7128158f515bcd01
Pau Espin Pedrol at
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
andre at
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
andre at
iperf3: add getter to retrieve received bitrate

Change-Id: Id5676ce002cab6d52480b9b0f996f3065fd5dda6
andre at
ltemme: add two on-demand dedicated bearer for TOS 0xb8 and 0x60

two bearer of QCI 1 and 2

Change-Id: I857bed943b0184540b0a8ac696e7ebddd693be87
andre at
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
andre at
{enb,epc,ms}_srs: expose log.all_level parameter

expose paramter to set log level, use warning as default

Change-Id: I4e77e5351399aefef47a309c82b8805e2c6022c5
andre at
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
Pau Espin Pedrol at
process: provide API to return filename for process output

this is useful if the caller handles the opening/reading from
the file itself

Change-Id: I5e70fd1593a5bc7902fa218aae6452103545e4e0
andre at
{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
andre at
amarisoft_enb: update lteenb default parameter for PDCCH, SRS and CQI

those configs should provide better HO performance, PDDCH format is selected automatically

Change-Id: I62a4240ac062d793ae5e197f852ea09eb4fe4ae9
andre at
test: append KPI rather than overwrite in set_kpi() method

this allows to call set_kpi() multiple times in one TC

Change-Id: I5f68d9e6e1135ee2afa79c9af2ed240d371214c4
andre at
srsue.conf.tmpl: add default EARFCNs for 4xCA config

Change-Id: I553241735b5e204cb4be03936b90628d156c418c
andre at
enb_srs: remove comment introduced through copy+paste

Change-Id: I7d14ae5c17bd1cd1c1b23657dc60dc331519e32c
andre at
ms_srs: add min_rolling_average calculation

useful metric to detect low/zero downlink throughput for longer
time periods

Change-Id: I77a82a68689bc6c21cb9227dc9e7616d03e2b547
andre at
enb_amarisoft: register log options as config scheme

allows setting those in scenario files

Change-Id: Idefd3c628441ededbee9411117ec426dd585eae0
andre at
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
Pau Espin Pedrol at
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
Pau Espin Pedrol at
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
Pau Espin Pedrol at
srsue.conf.tmpl: use UE cat 8 whenever more than one carrier is configured

Change-Id: Id96827960cac436b8ac363e28c2b0ab7b6acf57f
Pau Espin Pedrol at
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
Pau Espin Pedrol at
jenkins-build-srslte.sh: pass extra configuration_opts to build_repo

this allows to pass extra CMake opts to, e.g., enable address sanitizer

Change-Id: I6fd00025a7225b1e075704d69354a8eb5e7f30ec
Pau Espin Pedrol at
srsepc.conf.tmpl: zero-pad mnc and mcc in config

srsEPC expect zero-padding MNC/MCC in config file. However,
001 and mcc will end up as 1 in the rendered template.
Therefore, they need to be formatted correctly.

Change-Id: Ie63cd1b15b961e493a6dcbd7e5a4fbabe0bb6f33
Pau Espin Pedrol at
contrib/jenkins-build-amarisoft.sh: Pass srsLTE.git branch explicitly

This allows easily changing the branch for local builds.

Change-Id: I9765e1ebdd7488788be5f5c7259cf8b6e04e58f6
Pau Espin Pedrol at
contrib/jenkins-build-amarisoft.sh: Allow generating trial without lteue

Some Amarisoft bundles may come without lteue in it. Allow the script to
run if that's the case by setting an envvar.

Change-Id: I363b44cd8aa48f80d24219b6bf5b3ebde580e3c3
Pau Espin Pedrol at
amarisoft_ltemme_ifup.sh: use ip cmd instead of ifconfig

ifconfig is deprecated and not available in newer distros.

Change-Id: I93e4b7f3c9bee2563c0e01a1ff7e832e5098cf1f
Pau Espin Pedrol at
4G: Add milenage support

Change-Id: I4c1fb9bfec9927f2bfa29e6b27959323838f59e5
Pau Espin Pedrol at
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
Pau Espin Pedrol at
iperf3: server: Avoid copying logfile during cleanup if already copied previously

Change-Id: I44e28f326fd476d27eb021922d38e9ca913aec69
Pau Espin Pedrol at
amarisoft_{mme,enb}: make sure mcc/mnc are zero padded

same as for srsEPC this is also required for Amarisoft MME and eNB to support, i.e. 001/01

Note that the 3 digit MNC isn't covered by this.

Change-Id: I80a84e01ec9530c285634452d7c18c17bdd595ce
andre at
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
andre at
amarisoft_drb: adapt QCI 8 config for ZMQ operation

we use the otherwise unused QCI 8 as a slightly modified
version of QCI 7 (default RLC UM) with a PDCP discard
timer set to infinity to avoid dropping PDCP SDUs if
packets arive faster than can be processed in the DL

Change-Id: I06b7b583701f90827fba36564f969b5d58c9b9ad
andre at
amarisoft_enb.cfg.tmpl: enable eNB PCAP if configured

enable PCAP output in eNB config

Change-Id: I8482315ce854c5b21a90b77de55dbb82f3049bcd
andre at
srsenb_drb.conf.tmpl: add QCI8 config

add QCI config with RLC UM and PDCP SDU discard set to infinity

Change-Id: If946f569f7bbb98fc754f30ff5627fa5ca4afe68
andre at
suite: fix runtime error when suite.duration is None

report generation failed when duration was not set correctly
and None was returned. Use 0 as duration by default.

Change-Id: Ia654c67bf2dcce432f84e869550c516d8d5a07a0
andre at
ttcn3/lib/testlib.py: make list of kwargs git friendly

Change-Id: I3b9e8d95b871f8bf5043b168fee0716c71becbe5
Vadim Yanitskiy at
ttcn3/lib/testlib.py: implement the concept of test case groups

Change-Id: I687c221e4a6c7232290509cb11a3158d72b9c2c3
Vadim Yanitskiy at
ttcn3/suites/bts: also enable both BTS_Tests_{SMSCB,LAPDm}

Change-Id: I8eb28584e90ad012cbf7f3175ee3a8e775c8d523
Vadim Yanitskiy at
ttcn3/suites/scripts: collect core dumps: add '--ulimit core=-1'

Change-Id: Ie3457f10f1a398c8cce6737002410f42ad908702
Vadim Yanitskiy at
ttcn3/lib/testlib.py: increase test suite execution timeout

Since I8eb28584e90ad012cbf7f3175ee3a8e775c8d523, the test suite
is supposed to run both BTS_Tests_{SMSCB,LAPDm}.control among with
BTS_Tests.control.  Apparently this requires more time than 3600
seconds, so everything is broken since build #2652 in Jenkins.

Change-Id: Ieceab920a94cbf92ff6c83a59d572f22e8ae933f
Vadim Yanitskiy at
srs{ue,enb}.conf.tmpl: remove restriction of PHY threads for ZMQ

we now support any number of PHY threads also with ZMQ operation

Change-Id: I31abfce742f757179fbfe4099cd0a934db4e63d7
andre at
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
andre at
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
andre at
srsenb_rr.conf.tmpl: reduce PUCCH PRBs for SR and CQI to 1

this gives higher UL throughput because less resources are reserved for
SR/CQI. For more users we may have to make the value configurable again.

Change-Id: If6c313a1deafffda26e9effeb807ca71064c46bc
andre at
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
andre at
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
andre at
4g: consider number of component carriers for max rate calculation

when carrier aggregation is enabled we need to multiply the
max rate of a single carrier with the number of carriers to
get the actual achievable rate

Change-Id: I70d850c0996ed461d3733e911adc33f3554c297c
andre at
bts-trx: Disable power-ramp

Power ramping features were implemented recently for osmo-bts-trx. We
don't want to enable them because it makes phones take longer (if even
at all) to find the network.

Change-Id: I35e2f560b28eddef886ad3b2f8ffb4ff79be77da
Pau Espin Pedrol at
osmo-trx: Set more restrictive logging levels to avoid sporadic high load on stderr

Change-Id: I9dca89027d9015b946440363eae5f7bd3e082268
Pau Espin Pedrol at
testenv: Fix missing import module util

util module is used in prompt() method (debug suite, interactive test).

Change-Id: I9bb759d053a99108f121f1c4f7994726b6075fee
Pau Espin Pedrol at
contrib: osmo-trx: Drop explicit --without-sse

Nowadays we have instruction set runtime detection, so there's no point
in disabling it in the binary, specially because nowadays we run in sse
capable host (despite in the past we didn't and there was no runtime
detection, hence why was it explicitly disabled).

Change-Id: I2ffdc60c7644bb514a3854965d17109e91dda800
Pau Espin Pedrol at
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
laforge at
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
laforge at
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
andre at
srsenb_rr.conf.example: comment CQI and SR specific subframes

this enables auto-selection by eNB which has been implemented
recently

Change-Id: I17e16c5c47a2fba5c2955a1c3e6e0e16f83bab72
andre at
reduce max expected UL rate for 4xCA 100 PRB

this needs to be reverte once extendedBSRs are supported

Change-Id: I8432c744868afe43e2b150f6fcecd8cb3a0458a3
andre at
{enb,epc,ms}_srs: refactor start/stop and KPI helpers

refactor some of the functionality to srslte_common

Change-Id: I2ff36df6f1a07ed8ddac39d296d62fe44a215283
andre at
srsenb_rr.conf.tmpl: set TAC for cells to 0x0007

this is the default TAC used in the EPC. A recent EPC patch
will reject the S1 setup request if the TACs don't match

Change-Id: I94fdb96631ce3ae35a1b2a9f90d1101df9161233
andre at
ms_srs: fix ZMQ config for 4xCA

add missing freq config for 4xCA

Change-Id: I88a389f5b03d6b55ff5ef403d5107c648a11686f
andre at
amarisoft_sib23.asn.tmpl: set p-b value in SIB23 depending on TM

this fixes a wrong p-b value used for TM2 and above

Change-Id: I89c557c456f3330f491cc66bc4931a0234bf6e02
andre at
amarisoft_enb.cfg.tmpl: use default tac 0007

this is the tac used in srsepc.

Change-Id: I1de432a52281ea210abae5648239fd89ba5eb4ce
andre at
lte: update UHD device args for MIMO usage

the USRP B210 device args were not ideal for MIMO configs for
both Amarisoft and srsLTE.

Change-Id: I3785bb96eb7c10a6b10b3d1a86fa71d1f787a7a3
andre at
amarisoft_enb.cfg.tmpl: increas threshold for failed UL retransmissions

this avoids the eNB from releasing the UE too early if the UL channel
stays very bad for a longer time but many PUSCH are scheduled

Change-Id: Ib82616e920eecc70fbded12433e54bd90ae1bcd4
andre at
enb_amarisoft: reduce max achievable UL rate for 100 PRB

Change-Id: Ib7a0b8e2948cdf6c0a15d4ad2bf7d218a6b28ea2
andre at
amarisoft_enb.cfg.tmpl: seperate PRACH root sequences for cells

seperate the root sequence index for each cell a bit more to
avoid detection of a single PRACH in both cells

Change-Id: I5aea1a27939c880944779c282e902465ab513715
andre at
srslte_common: add get_num_phy_errors() method

the get_num_phy_errors() uses the external KPI analyzer module
to calculate the number of PHY layers errors in a vector of log metrics

Change-Id: I0c8de87e7f83f986e288585640ce56847959c497
andre at
srslte_common: fix indent in whole file

Change-Id: I8aee79e9d451761dde8f35f84d75483dc4e23040
andre at
ms_srs: add freq_offset as resource param

this allows to specify a freq tuning offset in Hz in the MS resource config

Change-Id: Iab726edd27e890d2c2dddbea91afe80d8a5068aa
andre at
jenkins-build-amarisoft: fix build script for ZMQ module

newer versions of srsLTE create symlinks with the rf library
including the version, see below. This caused the trx_zmq.so
lib to load .so.0 instead of .so only. this patch adds
another symlink so loading works fine again

libsrslte_rf.so -> libsrslte_rf.so.0
libsrslte_rf.so.0 -> libsrslte_rf.so.20.10.0
libsrslte_rf.so.20.10.0

Change-Id: Ib5302c9872f4c82a1ee5074f59de86709aa6c5a9
andre at
enb_amarisoft: add rf_dev_sync option to specify the sync type

this allows to specify "external_clock" for example to use
the external REF input of an USRP

Change-Id: Ie066993440840cbd2c18e8f0c0c577b92ac7092d
andre at
srs{enb,ue}: add rf_dev_sync option to config templates

pass-through the option so they can be used in templates

just concatenate with rf_dev_args for srsLTE eNB/UE, arguments
parsing will handle them

Change-Id: I3818026c159780f29968888f547163cdf730afad
andre at
Introduce RFemu stdin implementation for srsENB

Change-Id: I5487dec3691cbf424306369f94f337ed34a10c70
andre at
srsenb: Fix ECI in handover cell list

So far we only support setting cell IDs from same ENB. Support for
handover to other ENB will come later, probably by adding some API to be
called during the test to add own's CellID's to other ENB's config.t

Change-Id: I1780bda130cde0faab15d4032117e0aa2b9c5dbe
andre at
srsenb: Activate handover in config file

This is needed to test handover features.

Change-Id: Ifa8462f4d1e183e73b059a7af37bcdf7b3e247f6
andre at
{enb,epc,ms}_srs: remove uneeded class variable

self.kpis is define in base class

Change-Id: I49c9c9cdf7bc31270d3cfe182a79b197a742dd2c
andre at
rfemu_srsenb_stdin: use negative dB value to set attenuation

the logic for the RF emulator on the command line is, like the
Amarisoft equivalent, to set a negative gain value to express
attenuation. Therefore, the sign needs to be inverted.

Change-Id: I7b6ac611a9f711bbdc1570602bfd797a5346ab86
andre at
templates/osmo-bts-trx: Increase osmo-trx rx-gain

Otherwise osmo-trx with a B200 seems to be having issues receiving some
data from the MS otherwise, making "sms" test fail. In general LU works
fine, and when MS sends the SMS, CM Service Request+Accept also works
fine, but then the BTS never sees the CP-DATA afterwards probably due to
MS power loop.

Change-Id: I5f7e3d22a142521ab83db81635ded252dabcf111
Pau Espin Pedrol at
scenarios: Introduce mod-enb-cells-2ca.conf

This configuration is needed to have UEs attaching to srsenb-zmq in
handover.py

Change-Id: I0182af4db98852f00622dcebe5274dc7f6e99e6d
Pau Espin Pedrol at

#275 (Apr 10, 2020, 12:21:42 AM)

bts_oc2g: Fix ready_for_pcu() waiting forever
Change-Id: Id33e527591164b87d1e14b7922247b726267ad6e
Pau Espin Pedrol at

#274 (Apr 10, 2020, 12:18:38 AM)

bts_oc2g: Fix ready_for_pcu() waiting forever
Change-Id: Id33e527591164b87d1e14b7922247b726267ad6e
Pau Espin Pedrol at

#273 (Apr 10, 2020, 12:09:45 AM)

bts_oc2g: Fix missing import remote
Change-Id: I318683b8dc6215f5bf863cfb1581e2c3bfa05621
Pau Espin Pedrol at

#272 (Apr 10, 2020, 12:01:18 AM)

pcu_{sysmo,oc2g}: Inherit from pcu abstract class
For some reason these classes were still not inheriting from the base
class (probably because it was added after they existed) and they
started failing after recent changes which presumed they where already
inheriting.
Change-Id: I88217baf490ec45373d0743585377ed2639a8cfd
Pau Espin Pedrol at

#13 (Jun 12, 2017, 11:21:52 AM)

test: Remove unused variable Failure
Commit 6ccda11a98afd6f4459e9ff1c24de4ad4450de23 removed its use but
forgot to remove it on this line.
Change-Id: I90375ce1e4b8e0b7e140df908323bc269e0baf40
Pau Espin Pedrol at
junit result: also write for aborted runs
Even if aborted due to signal, write a JUnit report XML, and make sure
to indicate the runs as erratic.
Change-Id: I7a334ef3463896c543c0fe592d3903c15e67d4c4
Neels Hofmeyr at
refactor logging: drop 'with', simplify
Refactor logging to simplify use: drop the 'with Origin' style
completely, and instead use the python stack to determine which objects
are created by which, and which object to associate a log statement
with.
The new way: we rely on the convention that each class instance has a
local
'self' referencing the object instance. If we need to find an origin as
a new object's parent, or to associate a log message with, we traverse
each stack frame, fetching the first local 'self' object that is a
log.Origin class instance.
We just call log() and it finds an Origin object to log for.
When an exception happens, we first escalate the exception to where ever
it is handled, and only then the log.log_exn() function finds an Origin
object in the traceback's stack frames.
Hence the 'with log.Origin' happens implicitly, no more hassles.
Furthermore, any frame can place additional information in a local
variable called log_ctx. This automatically inserted in the ancestry
associated with a log statement.
Change-Id: I5f9b53150f2bb6fa9d63ce27f0806f0ca6a45e90
Neels Hofmeyr at
log.Origin: ensure to avoid parent loops
Change-Id: I10a2f956beeda38ba1378eace9453eb911aae1a7
Neels Hofmeyr at