Skip to content

Changes

Started by Pau Espin Pedrol
Started 5 yr 4 mo ago
Took 3 min 39 sec on osmo-gsm-tester-prod
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
templates: Improve cs7 config in osmo-{bsc,msc}

Change-Id: I0aa0057c85e606d45e67d01b818db7549033bdbd
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
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
example/suites/nitb_smpp/esme_connect_policy_acceptall.py example/suites/encryption/register_a5_3_authreq.py example/paths.conf example/suites/voice/mo_mt_call.py suites/nitb_sms/suite.conf example/suites/4g/ping.py suites/nitb_debug/error.py suites/gprs/suite.conf suites/nitb_smpp/esme_connect_policy_closed.py suites/nitb_netreg_mass/register_default_mass.py example/suites/dynts/switch_tch_pdch.py suites/debug/interactive.py suites/debug/suite.conf example/suites/nitb_debug/error.py example/suites/ussd/suite.conf doc/manuals/chapters/install.adoc suites/nitb_debug/interactive.py suites/gprs/iperf3.py example/suites/nitb_debug/suite.conf example/suites/nitb_sms/mo_mt_sms.py example/suites/voice/lib/testlib.py example/suites/encryption/register_a5_1_authreq.py example/suites/nitb_netreg/suite.conf example/suites/nitb_netreg_mass/register_default_mass.py suites/nitb_netreg/suite.conf suites/voice/mo_mt_call.py suites/encryption/register_a5_3_authreq.py suites/encryption/lib/testlib.py example/suites/gprs/cs_paging_gprs_active.py example/suites/4g/iperf3_ul.py suites/nitb_netreg_mass/suite.conf suites/smpp/esme_connect_policy_acceptall.py suites/nitb_smpp/esme_connect_policy_acceptall.py suites/gprs/ping.py example/suites/encryption/lib/testlib.py example/suites/nitb_netreg/register.py example/suites/smpp/esme_ms_sms_transaction.py suites/nitb_netreg/register_default.py example/suites/smpp/suite.conf example/suites/4g/suite.conf suites/nitb_smpp/esme_ms_sms_storeforward.py doc/manuals/chapters/config.adoc suites/voice/lib/testlib.py suites/smpp/esme_connect_policy_closed.py suites/smpp/esme_ms_sms_transaction.py suites/voice/suite.conf suites/encryption/register_a5_0_authopt.py suites/encryption/suite.conf suites/smpp/esme_ms_sms_storeforward.py example/suites/ussd/assert_extension.py suites/nitb_smpp/esme_ms_sms_transaction.py suites/4g/ping.py example/suites/nitb_smpp/esme_ms_sms_transaction.py suites/dynts/suite.conf suites/nitb_debug/suite.conf example/suites/smpp/esme_ms_sms_storeforward.py example/suites/gprs/iperf3m4.py example/suites/nitb_debug/interactive.py suites/nitb_ussd/suite.conf example/suites/nitb_ussd/assert_extension.py example/suites/nitb_netreg_mass/suite.conf suites/4g/iperf3_ul.py example/suites/4g/iperf3_dl.py example/suites/nitb_debug/fail_raise.py example/suites/nitb_debug/pass.py suites/nitb_ussd/assert_extension.py example/suites/nitb_smpp/esme_ms_sms_storeforward.py example/suites/encryption/suite.conf suites/ussd/assert_extension.py suites/nitb_smpp/suite.conf example/suites/gprs/ping_idle_ping.py suites/gprs/cs_paging_gprs_active.py example/suites/dynts/suite.conf suites/encryption/register_a5_0_authreq.py example/suites/smpp/esme_connect_policy_closed.py example/suites/sms/mo_mt_sms.py suites/nitb_debug/fail.py example/suites/gprs/iperf3.py example/suites/nitb_netreg/register_default.py example/suites/encryption/register_a5_0_authreq.py example/suites/encryption/register_a5_0_authopt.py suites/nitb_sms/mo_mt_sms.py suites/sms/suite.conf example/suites/debug/interactive.py example/suites/nitb_debug/fail.py example/suites/debug/suite.conf suites/nitb_debug/pass.py example/suites/voice/mo_mt_call_osmux.py suites/nitb_debug/fail_raise.py example/suites/nitb_sms/suite.conf example/suites/gprs/ping.py suites/gprs/ping_idle_ping.py suites/sms/mo_mt_sms.py example/suites/nitb_ussd/suite.conf suites/4g/suite.conf suites/gprs/lib/testlib.py example/suites/nitb_smpp/suite.conf example/suites/sms/suite.conf suites/ussd/suite.conf suites/smpp/suite.conf example/suites/smpp/esme_connect_policy_acceptall.py example/suites/gprs/suite.conf example/suites/nitb_smpp/esme_connect_policy_closed.py suites/dynts/switch_tch_pdch.py suites/nitb_netreg/register.py example/suites/gprs/lib/testlib.py suites/voice/mo_mt_call_osmux.py suites/4g/iperf3_dl.py suites/encryption/register_a5_1_authreq.py suites/gprs/iperf3m4.py example/suites/voice/suite.conf
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
example/scenarios/mod-enb-nprb@.conf sysmocom/suites/debug/interactive.py example/scenarios/mod-enb-txmode@.conf example/scenarios/trx-sysmocell5000.conf example/suites/4g/iperf3_ul.py example/scenarios/srsenb-rftype@.conf example/suites/nitb_debug/fail.py example/suites/voice/mo_mt_call.py sysmocom/suites/encryption/register_a5_0_authreq.py example/suites/voice/lib/testlib.py example/suites/gprs/suite.conf sysmocom/suites/encryption/register_a5_1_authreq.py sysmocom/suites/gprs/lib/testlib.py sysmocom/scenarios/band-1900.conf sysmocom/suites/nitb_smpp/esme_connect_policy_closed.py example/suites/gprs/iperf3m4.py example/scenarios/mod-bts0-dynts67-ipa.conf sysmocom/scenarios/mod-bts0-dynts67-ipa-compat-nanobts.conf example/scenarios/mod-modem-args@.conf example/suites/encryption/suite.conf example/suites/gprs/iperf3.py example/suites/smpp/esme_connect_policy_acceptall.py sysmocom/suites/ussd/suite.conf sysmocom/suites/nitb_netreg_mass/suite.conf sysmocom/suites/ussd/assert_extension.py sysmocom/scenarios/mod-bts0-egprs.conf example/suites/encryption/register_a5_1_authreq.py example/scenarios/cfg-codec-fr-any.conf example/suites/nitb_debug/error.py sysmocom/suites/smpp/esme_ms_sms_transaction.py sysmocom/scenarios/band-1800.conf sysmocom/scenarios/cfg-epc-type@.conf sysmocom/suites/nitb_sms/mo_mt_sms.py example/suites/nitb_ussd/suite.conf ttcn3/scenarios/sysmo.conf example/scenarios/trx-lms.conf example/suites/nitb_debug/pass.py sysmocom/suites/nitb_netreg_mass/register_default_mass.py sysmocom/scenarios/cipher-a50.conf sysmocom/scenarios/trx-b200.conf example/suites/nitb_sms/mo_mt_sms.py sysmocom/scenarios/cfg-codec-fr1.conf sysmocom/ttcn3/README.txt example/scenarios/mfeature-gprs.conf sysmocom/ttcn3/suites/ttcn3_bts_tests/lib/testlib.py example/scenarios/amarisoftue-rftype@.conf sysmocom/scenarios/mod-bts0-ts-tchh.conf sysmocom/ttcn3/resources.conf.rnd example/scenarios/oc2g.conf example/resources.conf.virtual ttcn3/scenarios/oc2g.conf example/scenarios/mod-enb-meas-event@.conf example/suites/sms/mo_mt_sms.py example/scenarios/cfg-codec-hr1.conf sysmocom/suites/nitb_debug/fail.py sysmocom/scenarios/cfg-codec-fr-any.conf example/scenarios/cfg-iperf3-time@.conf sysmocom/scenarios/cfg-codec-fr3.conf sysmocom/suites/gprs/ping.py sysmocom/suites/nitb_smpp/suite.conf sysmocom/suites/smpp/esme_connect_policy_acceptall.py example/scenarios/mod-bts0-egprs.conf example/suites/nitb_smpp/esme_ms_sms_storeforward.py sysmocom/scenarios/mod-bts0-dynts67-osmo.conf sysmocom/scenarios/mod-bts0-trxdversion0.conf example/scenarios/mod-srsue-airplane_mode_sim@.conf ttcn3/suites/ttcn3_bts_tests/scripts/BTS_Tests.cfg.tmpl sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py sysmocom/suites/encryption/register_a5_3_authreq.py example/suites/gprs/lib/testlib.py example/scenarios/mod-bts0-trxdversion0.conf example/suites/nitb_smpp/esme_connect_policy_closed.py sysmocom/suites/smpp/suite.conf example/suites/nitb_netreg/suite.conf sysmocom/suites/voice/mo_mt_call.py sysmocom/scenarios/mod-bts0-dynts67-ipa.conf example/suites/nitb_netreg/register_default.py sysmocom/scenarios/mod-bts0-ts-tchf.conf sysmocom/scenarios/sysmo.conf sysmocom/scenarios/mod-srsue-airplane_mode_sim@.conf example/suites/ussd/assert_extension.py sysmocom/ttcn3/suites/ttcn3_bts_tests/suite.conf sysmocom/suites/nitb_debug/error.py sysmocom/scenarios/trx-sysmocell5000.conf sysmocom/suites/nitb_netreg/suite.conf example/scenarios/cfg-codec-hr3.conf sysmocom/scenarios/mod-enb-txmode@.conf sysmocom/scenarios/srsue-rftype@.conf example/suites/ussd/suite.conf sysmocom/ttcn3/defaults.conf example/suites/voice/suite.conf example/scenarios/mod-srsue-ncarriers@.conf sysmocom/scenarios/mod-bts0-chanallocdescend.conf sysmocom/scenarios/mod-enb-nprb@.conf example/suites/gprs/ping_idle_ping.py example/suites/nitb_netreg_mass/register_default_mass.py sysmocom/scenarios/cfg-codec-hr3.conf sysmocom/ttcn3/paths.conf ttcn3/suites/ttcn3_bts_tests/scripts/run_ttcn3_docker.sh example/scenarios/cfg-codec-fr1.conf sysmocom/suites/nitb_ussd/suite.conf ttcn3/suites/ttcn3_bts_tests/suite.conf sysmocom/scenarios/trx-umtrx.conf example/suites/encryption/register_a5_0_authreq.py sysmocom/defaults.conf example/scenarios/cfg-epc-qci@.conf sysmocom/scenarios/mod-bts0-dynts-ipa.conf sysmocom/scenarios/amarisoftenb-rftype@.conf example/scenarios/mod-enb-ncells@.conf sysmocom/scenarios/mod-bts0-dynts-osmo.conf example/suites/debug/interactive.py example/suites/dynts/switch_tch_pdch.py sysmocom/resources.conf.virtual sysmocom/scenarios/mod-enb-args@.conf example/scenarios/band-1800.conf example/suites/nitb_smpp/esme_ms_sms_transaction.py example/suites/voice/mo_mt_call_osmux.py sysmocom/suites/gprs/iperf3m4.py sysmocom/suites/nitb_ussd/assert_extension.py example/suites/debug/suite.conf sysmocom/scenarios/nanobts.conf sysmocom/scenarios/trx-lms.conf sysmocom/scenarios/mfeature-gprs.conf sysmocom/suites/gprs/suite.conf sysmocom/scenarios/mod-srsue-ncarriers@.conf sysmocom/suites/sms/mo_mt_sms.py sysmocom/README.txt example/scenarios/cipher-a51.conf example/scenarios/mod-bts0-ts-tchh.conf sysmocom/scenarios/oc2g.conf example/scenarios/cfg-amarisoft-license@.conf sysmocom/suites/gprs/iperf3.py example/scenarios/cfg-codec-fr3.conf sysmocom/suites/sms/suite.conf ttcn3/resources.conf.rnd example/suites/4g/ping.py sysmocom/scenarios/trx.conf example/suites/4g/iperf3_dl.py sysmocom/scenarios/cfg-epc-qci@.conf sysmocom/suites/voice/lib/testlib.py example/resources.conf.prod sysmocom/ttcn3/suites/ttcn3_bts_tests/scripts/BTS_Tests.cfg.tmpl example/scenarios/cfg-epc-type@.conf example/suites/4g/suite.conf sysmocom/suites/nitb_smpp/esme_connect_policy_acceptall.py ttcn3/jenkins-run.sh sysmocom/ttcn3/scenarios/oc2g.conf example/suites/smpp/esme_ms_sms_transaction.py sysmocom/scenarios/mod-bts0-numtrx2.conf example/scenarios/mod-bts0-ts-tchf.conf sysmocom/suites/gprs/cs_paging_gprs_active.py example/suites/nitb_smpp/suite.conf example/suites/smpp/esme_connect_policy_closed.py sysmocom/suites/encryption/lib/testlib.py ttcn3/paths.conf sysmocom/suites/nitb_debug/pass.py example/scenarios/mod-bts0-dynts-osmo.conf example/suites/encryption/register_a5_0_authopt.py sysmocom/ttcn3/scenarios/trx.conf example/scenarios/band-1900.conf sysmocom/suites/4g/iperf3_dl.py sysmocom/suites/dynts/switch_tch_pdch.py sysmocom/resources.conf.rnd sysmocom/suites/4g/iperf3_ul.py sysmocom/suites/nitb_debug/fail_raise.py sysmocom/scenarios/cipher-a51.conf sysmocom/suites/gprs/ping_idle_ping.py sysmocom/suites/nitb_netreg/register_default.py sysmocom/ttcn3/scenarios/sysmo.conf sysmocom/scenarios/cfg-srs-enable-pcap.conf ttcn3/default-suites.conf sysmocom/scenarios/band-900.conf example/suites/smpp/suite.conf sysmocom/scenarios/srsenb-rftype@.conf sysmocom/scenarios/cfg-codec-hr1.conf example/scenarios/cfg-srs-enable-pcap.conf sysmocom/suites/smpp/esme_ms_sms_storeforward.py ttcn3/README.txt sysmocom/suites/encryption/register_a5_0_authopt.py sysmocom/suites/nitb_sms/suite.conf sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py example/suites/nitb_debug/interactive.py sysmocom/scenarios/amarisoftue-rftype@.conf example/suites/nitb_smpp/esme_connect_policy_acceptall.py example/scenarios/band-900.conf example/scenarios/cipher-a50.conf example/scenarios/mod-bts0-dynts67-ipa-compat-nanobts.conf sysmocom/suites/voice/suite.conf sysmocom/ttcn3/default-suites.conf ttcn3/suites/ttcn3_bts_tests/lib/testlib.py example/suites/encryption/register_a5_3_authreq.py example/scenarios/mod-bts0-chanallocdescend.conf example/scenarios/nanobts.conf sysmocom/suites/4g/ping.py example/paths.conf sysmocom/scenarios/mod-enb-ncells@.conf example/suites/nitb_netreg_mass/suite.conf example/suites/dynts/suite.conf ttcn3/defaults.conf example/scenarios/mod-bts0-dynts-ipa.conf sysmocom/ttcn3/suites/ttcn3_bts_tests/ttcn3_bts_tests.py example/scenarios/cfg-codec-fr2.conf sysmocom/suites/nitb_debug/suite.conf sysmocom/default-suites.conf sysmocom/suites/debug/suite.conf example/suites/nitb_ussd/assert_extension.py example/scenarios/trx-umtrx.conf example/suites/nitb_netreg/register.py sysmocom/scenarios/cfg-amarisoft-license@.conf example/scenarios/trx-lms-limenet-micro.conf example/suites/encryption/lib/testlib.py example/default-suites.conf example/suites/sms/suite.conf sysmocom/suites/voice/mo_mt_call_osmux.py example/scenarios/srsue-rftype@.conf example/suites/gprs/cs_paging_gprs_active.py sysmocom/suites/smpp/esme_connect_policy_closed.py sysmocom/scenarios/cfg-iperf3-time@.conf sysmocom/suites/nitb_debug/interactive.py sysmocom/scenarios/trx-lms-limenet-micro.conf example/resources.conf.rnd sysmocom/scenarios/mod-enb-meas-event@.conf sysmocom/suites/nitb_netreg/register.py sysmocom/resources.conf.prod sysmocom/ttcn3/jenkins-run.sh example/defaults.conf example/scenarios/octphy.conf example/scenarios/trx.conf ttcn3/resources.conf.prod sysmocom/scenarios/octphy.conf example/suites/gprs/ping.py .gitignore ttcn3/suites/ttcn3_bts_tests/ttcn3_bts_tests.py sysmocom/paths.conf example/scenarios/mod-bts0-dynts67-osmo.conf sysmocom/ttcn3/suites/ttcn3_bts_tests/scripts/run_ttcn3_docker.sh sysmocom/ttcn3/resources.conf.prod sysmocom/suites/4g/suite.conf example/suites/nitb_debug/suite.conf sysmocom/suites/dynts/suite.conf example/scenarios/mod-enb-args@.conf example/suites/smpp/esme_ms_sms_storeforward.py example/scenarios/trx-b200.conf example/scenarios/sysmo.conf ttcn3/scenarios/trx.conf sysmocom/scenarios/cfg-codec-fr2.conf sysmocom/scenarios/mod-modem-args@.conf sysmocom/suites/encryption/suite.conf example/scenarios/amarisoftenb-rftype@.conf example/scenarios/mod-bts0-numtrx2.conf example/README.txt example/suites/nitb_debug/fail_raise.py example/suites/nitb_sms/suite.conf
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
Create core directory to contain most of code not in object classes used by tests

Change-Id: I9aec6c55ccd71894182057d36e0025b69925d314
src/osmo_gsm_tester/msc_osmo.py src/osmo_gsm_tester/core/template.py src/osmo_gsm_tester/run_node.py src/osmo_ms_driver/__main__.py src/osmo_gsm_tester/pcap_recorder.py src/osmo_gsm_tester/trial.py src/osmo_gsm_tester/enb_amarisoft.py src/osmo_gsm_tester/ms_driver.py src/osmo_gsm_tester/bts_octphy.py src/osmo_gsm_tester/test.py src/osmo_ms_driver/event_server.py src/osmo_gsm_tester/util.py src/osmo_gsm_tester/osmocon.py selftest/lock_test_help.py src/osmo_gsm_tester/mgw_osmo.py src/osmo_gsm_tester/smsc.py src/osmo_gsm_tester/pcu_sysmo.py src/osmo_gsm_tester/epc.py src/osmo_gsm_tester/enb.py src/osmo_gsm_tester/stp_osmo.py src/osmo_gsm_tester/esme.py src/osmo_gsm_tester/remote.py src/osmo_gsm_tester/bts_oc2g.py src/osmo_gsm_tester/core/process.py src/osmo_gsm_tester/powersupply_sispm.py src/osmo_gsm_tester/pcu.py src/osmo_gsm_tester/process.py src/osmo_gsm_tester/iperf3.py src/osmo_gsm_tester/core/config.py src/osmo_gsm_tester/core/schema.py src/osmo-gsm-tester.py src/osmo_gsm_tester/template.py src/osmo_gsm_tester/core/remote.py src/osmo_gsm_tester/modem.py src/osmo_gsm_tester/ms.py src/osmo_ms_driver/simple_loop.py selftest/util_test.py src/osmo_gsm_tester/mgcpgw_osmo.py src/osmo_gsm_tester/core/util.py src/osmo_gsm_tester/core/__init__.py src/osmo_gsm_tester/ms_amarisoft.py src/osmo_ms_driver/test_support.py selftest/template_test.py selftest/config_test.py src/osmo_gsm_tester/bts_sysmo.py src/osmo_gsm_tester/event_loop.py src/osmo_gsm_tester/bts.py src/osmo_gsm_tester/core/event_loop.py src/osmo_gsm_tester/core/log.py src/osmo_gsm_tester/suite.py src/osmo_gsm_tester/bts_nanobts.py selftest/suite_test.py src/osmo_gsm_tester/nitb_osmo.py src/osmo_gsm_tester/pcu_oc2g.py src/osmo_gsm_tester/powersupply.py src/osmo_gsm_tester/enb_srs.py selftest/resource_test.py selftest/_prep.py src/osmo_gsm_tester/bts_osmovirtual.py src/osmo_gsm_tester/epc_amarisoft.py src/osmo_gsm_tester/ms_srs.py src/osmo_gsm_tester/log.py src/osmo_gsm_tester/pcu_osmo.py src/osmo_gsm_tester/sgsn_osmo.py src/osmo_gsm_tester/bts_osmo.py selftest/trial_test.py src/osmo_gsm_tester/bts_osmotrx.py src/osmo_gsm_tester/schema.py src/osmo_gsm_tester/ggsn_osmo.py src/osmo_gsm_tester/powersupply_intellinet.py src/osmo_gsm_tester/epc_srs.py src/osmo_ms_driver/starter.py src/osmo_gsm_tester/resource.py src/osmo_gsm_tester/hlr_osmo.py selftest/log_test.py selftest/process_test.py src/osmo_gsm_tester/osmo_ctrl.py src/osmo_gsm_tester/config.py src/osmo_gsm_tester/bsc_osmo.py
Pau Espin Pedrol at
Move object classes used by tests into obj/ subdir

Change-Id: I0b2963cf00acd1f9036dca2e87aa3b87a0f8066d
src/osmo_gsm_tester/osmocon.py src/osmo_gsm_tester/obj/ms_srs.py src/osmo_gsm_tester/enb.py src/osmo_gsm_tester/ggsn_osmo.py src/osmo_gsm_tester/pcu_osmo.py src/osmo_gsm_tester/stp_osmo.py src/osmo_gsm_tester/pcap_recorder.py src/osmo_gsm_tester/hlr_osmo.py src/osmo_gsm_tester/ms_driver.py src/osmo_gsm_tester/nitb_osmo.py src/osmo_gsm_tester/pcu.py src/osmo_gsm_tester/ms.py src/osmo_gsm_tester/esme.py src/osmo_gsm_tester/obj/epc.py src/osmo_gsm_tester/bts_octphy.py src/osmo_gsm_tester/obj/ms_osmo_mobile.py src/osmo_gsm_tester/obj/osmocon.py src/osmo_gsm_tester/obj/bts.py src/osmo_gsm_tester/obj/enb.py selftest/sms_test.py src/osmo_gsm_tester/obj/bts_sysmo.py src/osmo_gsm_tester/obj/run_node.py src/osmo_gsm_tester/obj/epc_amarisoft.py src/osmo_gsm_tester/smsc.py src/osmo_gsm_tester/enb_srs.py src/osmo_gsm_tester/test.py src/osmo_gsm_tester/epc_amarisoft.py src/osmo_gsm_tester/obj/smsc.py src/osmo_gsm_tester/bts_nanobts.py src/osmo_gsm_tester/enb_amarisoft.py src/osmo_gsm_tester/powersupply_sispm.py src/osmo_gsm_tester/epc.py src/osmo_gsm_tester/obj/pcu_sysmo.py src/osmo_gsm_tester/powersupply.py src/osmo_gsm_tester/obj/ggsn_osmo.py src/osmo_gsm_tester/mgw_osmo.py src/osmo_gsm_tester/bts_sysmo.py src/osmo_gsm_tester/resource.py src/osmo_gsm_tester/obj/bts_nanobts.py src/osmo_gsm_tester/pcu_oc2g.py src/osmo_gsm_tester/obj/ms.py src/osmo_gsm_tester/obj/nitb_osmo.py src/osmo_gsm_tester/obj/powersupply_intellinet.py src/osmo_gsm_tester/obj/enb_amarisoft.py src/osmo_gsm_tester/obj/msc_osmo.py src/osmo_gsm_tester/pcu_sysmo.py src/osmo_gsm_tester/obj/epc_srs.py src/osmo_gsm_tester/obj/osmo_ctrl.py src/osmo_gsm_tester/bts_oc2g.py src/osmo_gsm_tester/obj/pcu_osmo.py src/osmo_gsm_tester/bsc_osmo.py src/osmo_gsm_tester/bts_osmo.py src/osmo_gsm_tester/obj/bts_osmotrx.py src/osmo_gsm_tester/ms_osmo_mobile.py src/osmo_gsm_tester/obj/stp_osmo.py src/osmo_gsm_tester/osmo_ctrl.py src/osmo_gsm_tester/obj/esme.py src/osmo_gsm_tester/mgcpgw_osmo.py src/osmo_gsm_tester/obj/ms_amarisoft.py src/osmo_gsm_tester/obj/ms_driver.py src/osmo_gsm_tester/obj/mgcpgw_osmo.py src/osmo_gsm_tester/obj/bts_osmo.py src/osmo_gsm_tester/obj/pcap_recorder.py src/osmo_gsm_tester/obj/bts_osmovirtual.py src/osmo_gsm_tester/bts.py src/osmo_gsm_tester/msc_osmo.py src/osmo_gsm_tester/modem.py src/osmo_gsm_tester/obj/sms.py src/osmo_gsm_tester/bts_osmovirtual.py src/osmo_gsm_tester/obj/pcu.py src/osmo_gsm_tester/obj/powersupply.py src/osmo_gsm_tester/obj/hlr_osmo.py src/osmo_gsm_tester/obj/iperf3.py src/osmo_gsm_tester/bts_osmotrx.py src/osmo_gsm_tester/run_node.py src/osmo_gsm_tester/obj/bts_oc2g.py src/osmo_gsm_tester/ms_amarisoft.py src/osmo_gsm_tester/iperf3.py src/osmo_gsm_tester/obj/bsc_osmo.py src/osmo_gsm_tester/obj/enb_srs.py src/osmo_gsm_tester/obj/sgsn_osmo.py src/osmo_gsm_tester/obj/modem.py src/osmo_gsm_tester/obj/powersupply_sispm.py src/osmo_gsm_tester/obj/bts_octphy.py src/osmo_gsm_tester/powersupply_intellinet.py src/osmo_gsm_tester/ms_srs.py src/osmo_gsm_tester/suite.py src/osmo_gsm_tester/obj/pcu_oc2g.py src/osmo_gsm_tester/sgsn_osmo.py src/osmo_gsm_tester/epc_srs.py src/osmo_gsm_tester/sms.py src/osmo_gsm_tester/obj/mgw_osmo.py
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
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
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
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
sysmocom/suites/encryption/register_a5_1_authreq.py doc/examples/2g_osmocom/suites/sms/mo_mt_sms.py sysmocom/suites/nitb_netreg_mass/register_default_mass.py sysmocom/suites/nitb_smpp/esme_connect_policy_acceptall.py sysmocom/suites/nitb_sms/mo_mt_sms.py sysmocom/suites/4g/ping.py sysmocom/suites/debug/interactive.py src/osmo_gsm_tester/testenv.py doc/examples/4g_srsLTE/suites/4g/ping.py sysmocom/suites/4g/iperf3_ul.py sysmocom/suites/gprs/ping.py sysmocom/suites/sms/mo_mt_sms.py sysmocom/suites/gprs/ping_idle_ping.py sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py sysmocom/suites/encryption/register_a5_0_authreq.py sysmocom/suites/voice/mo_mt_call.py doc/examples/4g_srsLTE/suites/4g/iperf3_dl.py sysmocom/suites/smpp/esme_ms_sms_storeforward.py sysmocom/suites/4g/iperf3_dl.py sysmocom/suites/nitb_debug/interactive.py sysmocom/suites/ussd/assert_extension.py sysmocom/suites/encryption/lib/testlib.py selftest/suite_test/test_suite/test_fail.py sysmocom/suites/encryption/register_a5_0_authopt.py sysmocom/suites/smpp/esme_ms_sms_transaction.py sysmocom/ttcn3/suites/ttcn3_bts_tests/ttcn3_bts_tests.py sysmocom/suites/nitb_netreg/register_default.py selftest/suite_test/test_suite/test_error.py sysmocom/suites/gprs/lib/testlib.py sysmocom/suites/nitb_netreg/register.py sysmocom/suites/smpp/esme_connect_policy_closed.py sysmocom/suites/encryption/register_a5_3_authreq.py doc/examples/4g_srsLTE/suites/4g/iperf3_ul.py sysmocom/suites/voice/mo_mt_call_osmux.py selftest/suite_test/test_suite/hello_world.py sysmocom/suites/gprs/cs_paging_gprs_active.py sysmocom/suites/smpp/esme_connect_policy_acceptall.py sysmocom/suites/voice/lib/testlib.py sysmocom/suites/nitb_ussd/assert_extension.py sysmocom/suites/gprs/iperf3.py sysmocom/suites/dynts/switch_tch_pdch.py sysmocom/suites/nitb_smpp/esme_connect_policy_closed.py sysmocom/ttcn3/suites/ttcn3_bts_tests/lib/testlib.py sysmocom/suites/gprs/iperf3m4.py sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py
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
selftest/lock_test/lock_test.sh selftest/trial_test/trial_test.ok.ign selftest/util_test/util_test.py selftest/sms_test.py selftest/config_test.py selftest/process_test/process_test.py selftest/resource_test/_prep.py selftest/sms_test/sms_test.err selftest/template_test.py selftest/log_test/log_test.py selftest/process_test.ok selftest/trial_test.py selftest/suite_test/suite_test.py selftest/process_test/_prep.py selftest/process_test/process_test.ok selftest/lock_test.ok selftest/trial_test/trial_test.err selftest/resource_test/resource_test.ok.ign selftest/config_test/_prep.py selftest/process_test/process_test.ok.ign selftest/cdf_test.ok selftest/resource_test.err selftest/lock_test.err selftest/log_test.err selftest/log_test.py selftest/util_test/util_test.ok selftest/template_test/template_test.err selftest/trial_test.ok.ign selftest/config_test/config_test.ok selftest/resource_test/resource_test.err selftest/resource_test/resource_test.py selftest/trial_test.ok selftest/sms_test.ok selftest/config_test/config_test.err selftest/lock_test/lock_test.ok selftest/log_test/_prep.py selftest/sms_test/sms_test.py selftest/cdf_test/_prep.py selftest/util_test.py selftest/config_test.err selftest/suite_test/suite_test.ok selftest/resource_test.py .gitignore selftest/template_test.ok selftest/resource_test/resource_test.ok selftest/resource_test.ok.ign selftest/template_test/template_test.ok selftest/template_test.err selftest/lock_test/_prep.py selftest/trial_test/trial_test.py selftest/resource_test/conf/paths.conf selftest/template_test/template_test.py selftest/resource_test.ok selftest/lock_test_help.py selftest/log_test/log_test.err selftest/cdf_test/cdf_test.ok selftest/cdf_test/cdf_test.py selftest/config_test/config_test.py selftest/lock_test/lock_test.err selftest/util_test.ok selftest/lock_test/lock_test_help.py selftest/sms_test/sms_test.ok selftest/suite_test.py selftest/suite_test/suite_test.ok.ign selftest/trial_test/trial_test.ok selftest/util_test/_prep.py selftest/cdf_test.py selftest/template_test/_prep.py selftest/sms_test.err selftest/conf/resources.conf selftest/process_test.err selftest/process_test/process_test.err selftest/lock_test.sh selftest/util_test.err selftest/trial_test/_prep.py selftest/log_test.ok selftest/process_test.ok.ign selftest/resource_test/conf/resources.conf selftest/suite_test/suite_test.err selftest/sms_test/_prep.py selftest/all_tests.py selftest/process_test.py selftest/suite_test.err selftest/_prep.py selftest/suite_test/_prep.py selftest/util_test/util_test.err selftest/conf/paths.conf selftest/suite_test.ok selftest/trial_test.err selftest/config_test.ok selftest/suite_test.ok.ign selftest/log_test/log_test.ok
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
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
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
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
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
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
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
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
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
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
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
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
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
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