<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17775">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Introduce doc/examples/ directory<br><br>It contains simple usual setups to get started with osmo-gsm-tester,<br>such as creating a 4G network using srsLTE or a 2G network using the<br>osmocom stack (+ ofono modems).<br><br>Change-Id: I55d5b1152da201799af21a77ef6c562f97bd94fc<br>---<br>A doc/examples/2g_osmocom/README.txt<br>A doc/examples/2g_osmocom/default-suites.conf<br>A doc/examples/2g_osmocom/defaults.conf<br>A doc/examples/2g_osmocom/paths.conf<br>A doc/examples/2g_osmocom/resources.conf<br>A doc/examples/2g_osmocom/scenarios/trx-b200.conf<br>A doc/examples/2g_osmocom/suites/sms/mo_mt_sms.py<br>A doc/examples/2g_osmocom/suites/sms/suite.conf<br>A doc/examples/4g_srsLTE/README.txt<br>A doc/examples/4g_srsLTE/default-suites.conf<br>A doc/examples/4g_srsLTE/defaults.conf<br>A doc/examples/4g_srsLTE/paths.conf<br>A doc/examples/4g_srsLTE/resources.conf<br>A doc/examples/4g_srsLTE/scenarios/cfg-epc-qci@.conf<br>A doc/examples/4g_srsLTE/scenarios/cfg-epc-type@.conf<br>A doc/examples/4g_srsLTE/scenarios/cfg-iperf3-time@.conf<br>A doc/examples/4g_srsLTE/scenarios/cfg-srs-enable-pcap.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-enb-args@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-enb-meas-event@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-enb-ncells@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-enb-nprb@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-enb-txmode@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-modem-args@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-srsue-airplane_mode_sim@.conf<br>A doc/examples/4g_srsLTE/scenarios/mod-srsue-ncarriers@.conf<br>A doc/examples/4g_srsLTE/scenarios/srsenb-rftype@.conf<br>A doc/examples/4g_srsLTE/scenarios/srsue-rftype@.conf<br>A doc/examples/4g_srsLTE/suites/4g/iperf3_dl.py<br>A doc/examples/4g_srsLTE/suites/4g/iperf3_ul.py<br>A doc/examples/4g_srsLTE/suites/4g/ping.py<br>A doc/examples/4g_srsLTE/suites/4g/suite.conf<br>31 files changed, 498 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/75/17775/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/examples/2g_osmocom/README.txt b/doc/examples/2g_osmocom/README.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..4c869ca</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/README.txt</span><br><span>@@ -0,0 +1,30 @@</span><br><span style="color: hsl(120, 100%, 40%);">+This a sample gsm test suite configured and ready to use.</span><br><span style="color: hsl(120, 100%, 40%);">+The only thing missing is a trial dir containing binaries.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+You can point osmo-gsm-tester.py at this config using the OSMO_GSM_TESTER_CONF</span><br><span style="color: hsl(120, 100%, 40%);">+environment variable:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    export OSMO_GSM_TESTER_CONF="$PWD"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+When there is no OSMO_GSM_TESTER_CONF set, osmo-gsm-tester will instead look</span><br><span style="color: hsl(120, 100%, 40%);">+for conf files in several locations like ~/.config/osmo-gsm-tester,</span><br><span style="color: hsl(120, 100%, 40%);">+/usr/local/etc/osmo-gsm-tester, /etc/osmo-gsm-tester.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+If you have your trial with binary tar archives in ~/my_trial</span><br><span style="color: hsl(120, 100%, 40%);">+you can run the suite for example like this:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo-gsm-tester.py ~/my_trial</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Specifically, from this dir:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    OSMO_GSM_TESTER_CONF="$PWD" ../src/osmo-gsm-tester.py ~/my_trial</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Alternatively you can setup this example as permanent config using something</span><br><span style="color: hsl(120, 100%, 40%);">+like:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    mkdir -p ~/.config</span><br><span style="color: hsl(120, 100%, 40%);">+    ln -s "$PWD" ~/.config/osmo-gsm-tester</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A ./state dir will be created to store the current osmo-gsm-tester state. If</span><br><span style="color: hsl(120, 100%, 40%);">+you prefer not to write to $PWD, set up an own configuration pointing at a</span><br><span style="color: hsl(120, 100%, 40%);">+different path (see paths.conf: 'state_dir').</span><br><span>diff --git a/doc/examples/2g_osmocom/default-suites.conf b/doc/examples/2g_osmocom/default-suites.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..94cf9c5</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/default-suites.conf</span><br><span>@@ -0,0 +1 @@</span><br><span style="color: hsl(120, 100%, 40%);">+- sms:trx-b200</span><br><span>diff --git a/doc/examples/2g_osmocom/defaults.conf b/doc/examples/2g_osmocom/defaults.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..06d596a</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/defaults.conf</span><br><span>@@ -0,0 +1,63 @@</span><br><span style="color: hsl(120, 100%, 40%);">+bsc:</span><br><span style="color: hsl(120, 100%, 40%);">+  net:</span><br><span style="color: hsl(120, 100%, 40%);">+    mcc: 901</span><br><span style="color: hsl(120, 100%, 40%);">+    mnc: 70</span><br><span style="color: hsl(120, 100%, 40%);">+    short_name: osmo-gsm-tester-msc</span><br><span style="color: hsl(120, 100%, 40%);">+    long_name: osmo-gsm-tester-msc</span><br><span style="color: hsl(120, 100%, 40%);">+    encryption: a5_0</span><br><span style="color: hsl(120, 100%, 40%);">+    codec_list:</span><br><span style="color: hsl(120, 100%, 40%);">+    - fr1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+msc:</span><br><span style="color: hsl(120, 100%, 40%);">+  net:</span><br><span style="color: hsl(120, 100%, 40%);">+    mcc: 901</span><br><span style="color: hsl(120, 100%, 40%);">+    mnc: 70</span><br><span style="color: hsl(120, 100%, 40%);">+    short_name: osmo-gsm-tester-msc</span><br><span style="color: hsl(120, 100%, 40%);">+    long_name: osmo-gsm-tester-msc</span><br><span style="color: hsl(120, 100%, 40%);">+    encryption: a5_0</span><br><span style="color: hsl(120, 100%, 40%);">+    authentication: optional</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bsc_bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  base_station_id_code: 63</span><br><span style="color: hsl(120, 100%, 40%);">+  stream_id: 255</span><br><span style="color: hsl(120, 100%, 40%);">+  osmobsc_bts_type: sysmobts</span><br><span style="color: hsl(120, 100%, 40%);">+  channel_allocator: ascending</span><br><span style="color: hsl(120, 100%, 40%);">+  gprs_mode: gprs</span><br><span style="color: hsl(120, 100%, 40%);">+  num_trx: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  max_trx: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  trx_list:</span><br><span style="color: hsl(120, 100%, 40%);">+  - nominal_power: 23</span><br><span style="color: hsl(120, 100%, 40%);">+    max_power_red: 0</span><br><span style="color: hsl(120, 100%, 40%);">+    arfcn: 868</span><br><span style="color: hsl(120, 100%, 40%);">+    timeslot_list:</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: CCCH+SDCCH4</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: SDCCH8</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+  - nominal_power: 23</span><br><span style="color: hsl(120, 100%, 40%);">+    max_power_red: 0</span><br><span style="color: hsl(120, 100%, 40%);">+    arfcn: 872</span><br><span style="color: hsl(120, 100%, 40%);">+    timeslot_list:</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: SDCCH8</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: TCH/F</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    - phys_chan_config: PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_bts_trx:</span><br><span style="color: hsl(120, 100%, 40%);">+  max_trx: 2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_trx:</span><br><span style="color: hsl(120, 100%, 40%);">+  type: uhd</span><br><span style="color: hsl(120, 100%, 40%);">+  launch_trx: true</span><br><span style="color: hsl(120, 100%, 40%);">+  clock_reference: internal</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3cli:</span><br><span style="color: hsl(120, 100%, 40%);">+  time: 60</span><br><span>diff --git a/doc/examples/2g_osmocom/paths.conf b/doc/examples/2g_osmocom/paths.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..27c5818</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/paths.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+state_dir: '/var/tmp/osmo-gsm-tester/state'</span><br><span style="color: hsl(120, 100%, 40%);">+suites_dir: './suites'</span><br><span style="color: hsl(120, 100%, 40%);">+scenarios_dir: './scenarios'</span><br><span>diff --git a/doc/examples/2g_osmocom/resources.conf b/doc/examples/2g_osmocom/resources.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..087c445</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/resources.conf</span><br><span>@@ -0,0 +1,40 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# all hardware and interfaces available to this osmo-gsm-tester</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ip_address:</span><br><span style="color: hsl(120, 100%, 40%);">+- addr: 10.42.42.2</span><br><span style="color: hsl(120, 100%, 40%);">+- addr: 10.42.42.3</span><br><span style="color: hsl(120, 100%, 40%);">+- addr: 10.42.42.4</span><br><span style="color: hsl(120, 100%, 40%);">+- addr: 10.42.42.5</span><br><span style="color: hsl(120, 100%, 40%);">+- addr: 10.42.42.6</span><br><span style="color: hsl(120, 100%, 40%);">+- addr: 10.42.42.7</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bts:</span><br><span style="color: hsl(120, 100%, 40%);">+- label: Ettus B200</span><br><span style="color: hsl(120, 100%, 40%);">+  type: osmo-bts-trx</span><br><span style="color: hsl(120, 100%, 40%);">+  ipa_unit_id: 6</span><br><span style="color: hsl(120, 100%, 40%);">+  addr: 10.42.42.50</span><br><span style="color: hsl(120, 100%, 40%);">+  band: GSM-1800</span><br><span style="color: hsl(120, 100%, 40%);">+  ciphers: [a5_0, a5_1, a5_3]</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_trx:</span><br><span style="color: hsl(120, 100%, 40%);">+    type: uhd</span><br><span style="color: hsl(120, 100%, 40%);">+    launch_trx: true</span><br><span style="color: hsl(120, 100%, 40%);">+    remote_user: jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+    trx_ip: 10.42.42.116</span><br><span style="color: hsl(120, 100%, 40%);">+    dev_args: "type=b200,serial=306BD11"</span><br><span style="color: hsl(120, 100%, 40%);">+    clock_reference: external</span><br><span style="color: hsl(120, 100%, 40%);">+    multi_arfcn: true</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+modem:</span><br><span style="color: hsl(120, 100%, 40%);">+- label: sierra_1st</span><br><span style="color: hsl(120, 100%, 40%);">+  path: '/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5.4/1-5.4.1/1-5.4.1.2'</span><br><span style="color: hsl(120, 100%, 40%);">+  ki: 'EBAB63D06C3F546A16C977CB40E57C68'</span><br><span style="color: hsl(120, 100%, 40%);">+  auth_algo: 'comp128v1'</span><br><span style="color: hsl(120, 100%, 40%);">+  ciphers: [a5_0, a5_1]</span><br><span style="color: hsl(120, 100%, 40%);">+  features: ['2g', 'sms', 'voice', 'ussd', 'sim']</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+- label: ec20_1</span><br><span style="color: hsl(120, 100%, 40%);">+  path: '/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5.4/1-5.4.1/1-5.4.1.6'</span><br><span style="color: hsl(120, 100%, 40%);">+  ki: '07F35D0A9476646169669401215580E0'</span><br><span style="color: hsl(120, 100%, 40%);">+  auth_algo: 'comp128v1'</span><br><span style="color: hsl(120, 100%, 40%);">+  ciphers: [a5_0, a5_1]</span><br><span style="color: hsl(120, 100%, 40%);">+  features: ['2g', 'sms', 'voice', 'ussd', 'gprs', 'sim']</span><br><span>diff --git a/doc/examples/2g_osmocom/scenarios/trx-b200.conf b/doc/examples/2g_osmocom/scenarios/trx-b200.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..2bad7e8</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/scenarios/trx-b200.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+resources:</span><br><span style="color: hsl(120, 100%, 40%);">+  bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  - label: Ettus B200</span><br><span style="color: hsl(120, 100%, 40%);">+    type: osmo-bts-trx</span><br><span>diff --git a/doc/examples/2g_osmocom/suites/sms/mo_mt_sms.py b/doc/examples/2g_osmocom/suites/sms/mo_mt_sms.py</span><br><span>new file mode 100755</span><br><span>index 0000000..7654ea6</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/suites/sms/mo_mt_sms.py</span><br><span>@@ -0,0 +1,41 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hlr = suite.hlr()</span><br><span style="color: hsl(120, 100%, 40%);">+bts = suite.bts()</span><br><span style="color: hsl(120, 100%, 40%);">+mgw_msc = suite.mgw()</span><br><span style="color: hsl(120, 100%, 40%);">+mgw_bsc = suite.mgw()</span><br><span style="color: hsl(120, 100%, 40%);">+stp = suite.stp()</span><br><span style="color: hsl(120, 100%, 40%);">+msc = suite.msc(hlr, mgw_msc, stp)</span><br><span style="color: hsl(120, 100%, 40%);">+bsc = suite.bsc(msc, mgw_bsc, stp)</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mo = suite.modem()</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mt = suite.modem()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hlr.start()</span><br><span style="color: hsl(120, 100%, 40%);">+stp.start()</span><br><span style="color: hsl(120, 100%, 40%);">+msc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+mgw_msc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+mgw_bsc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bsc.bts_add(bts)</span><br><span style="color: hsl(120, 100%, 40%);">+bsc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bts.start()</span><br><span style="color: hsl(120, 100%, 40%);">+wait(bsc.bts_is_connected, bts)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hlr.subscriber_add(ms_mo)</span><br><span style="color: hsl(120, 100%, 40%);">+hlr.subscriber_add(ms_mt)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mo.connect(msc.mcc_mnc())</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mt.connect(msc.mcc_mnc())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mo.log_info()</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mt.log_info()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for modems to attach...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ms_mo.is_connected, msc.mcc_mnc())</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ms_mt.is_connected, msc.mcc_mnc())</span><br><span style="color: hsl(120, 100%, 40%);">+wait(msc.subscriber_attached, ms_mo, ms_mt)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sms = ms_mo.sms_send(ms_mt)</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ms_mt.sms_was_received, sms)</span><br><span>diff --git a/doc/examples/2g_osmocom/suites/sms/suite.conf b/doc/examples/2g_osmocom/suites/sms/suite.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..28a81ea</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/2g_osmocom/suites/sms/suite.conf</span><br><span>@@ -0,0 +1,9 @@</span><br><span style="color: hsl(120, 100%, 40%);">+resources:</span><br><span style="color: hsl(120, 100%, 40%);">+  ip_address:</span><br><span style="color: hsl(120, 100%, 40%);">+  - times: 6 # msc, bsc, hlr, stp, mgw*2</span><br><span style="color: hsl(120, 100%, 40%);">+  bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  - times: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+  - times: 2</span><br><span style="color: hsl(120, 100%, 40%);">+    features:</span><br><span style="color: hsl(120, 100%, 40%);">+    - sms</span><br><span>diff --git a/doc/examples/4g_srsLTE/README.txt b/doc/examples/4g_srsLTE/README.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..6840801</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/README.txt</span><br><span>@@ -0,0 +1,30 @@</span><br><span style="color: hsl(120, 100%, 40%);">+This a sample 4G test suite configured and ready to use srsLTE stack.</span><br><span style="color: hsl(120, 100%, 40%);">+The only thing missing is a trial dir containing binaries.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+You can point osmo-gsm-tester.py at this config using the OSMO_GSM_TESTER_CONF</span><br><span style="color: hsl(120, 100%, 40%);">+environment variable:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    export OSMO_GSM_TESTER_CONF="$PWD"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+When there is no OSMO_GSM_TESTER_CONF set, osmo-gsm-tester will instead look</span><br><span style="color: hsl(120, 100%, 40%);">+for conf files in several locations like ~/.config/osmo-gsm-tester,</span><br><span style="color: hsl(120, 100%, 40%);">+/usr/local/etc/osmo-gsm-tester, /etc/osmo-gsm-tester.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+If you have your trial with binary tar archives in ~/my_trial</span><br><span style="color: hsl(120, 100%, 40%);">+you can run the suite for example like this:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo-gsm-tester.py ~/my_trial</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Specifically, from this dir:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    OSMO_GSM_TESTER_CONF="$PWD" ../../src/osmo-gsm-tester.py ~/my_trial</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Alternatively you can setup this example as permanent config using something</span><br><span style="color: hsl(120, 100%, 40%);">+like:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    mkdir -p ~/.config</span><br><span style="color: hsl(120, 100%, 40%);">+    ln -s "$PWD" ~/.config/osmo-gsm-tester</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A ./state dir will be created to store the current osmo-gsm-tester state. If</span><br><span style="color: hsl(120, 100%, 40%);">+you prefer not to write to $PWD, set up an own configuration pointing at a</span><br><span style="color: hsl(120, 100%, 40%);">+different path (see paths.conf: 'state_dir').</span><br><span>diff --git a/doc/examples/4g_srsLTE/default-suites.conf b/doc/examples/4g_srsLTE/default-suites.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..136cb92</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/default-suites.conf</span><br><span>@@ -0,0 +1,2 @@</span><br><span style="color: hsl(120, 100%, 40%);">+- 4g:srsue-rftype@uhd+srsenb-rftype@uhd+mod-enb-nprb@6</span><br><span style="color: hsl(120, 100%, 40%);">+- 4g:srsue-rftype@zmq+srsenb-rftype@zmq+mod-enb-nprb@25</span><br><span>diff --git a/doc/examples/4g_srsLTE/defaults.conf b/doc/examples/4g_srsLTE/defaults.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..4a3b4c4</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/defaults.conf</span><br><span>@@ -0,0 +1,40 @@</span><br><span style="color: hsl(120, 100%, 40%);">+epc:</span><br><span style="color: hsl(120, 100%, 40%);">+  type: srsepc</span><br><span style="color: hsl(120, 100%, 40%);">+  mcc: 901</span><br><span style="color: hsl(120, 100%, 40%);">+  mnc: 70</span><br><span style="color: hsl(120, 100%, 40%);">+  qci: 9</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+srsepc:</span><br><span style="color: hsl(120, 100%, 40%);">+  enable_pcap: false</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  mcc: 901</span><br><span style="color: hsl(120, 100%, 40%);">+  mnc: 70</span><br><span style="color: hsl(120, 100%, 40%);">+  transmission_mode: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  num_cells: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  enable_measurements: false</span><br><span style="color: hsl(120, 100%, 40%);">+  a1_report_type: rsrp</span><br><span style="color: hsl(120, 100%, 40%);">+  a1_report_value: -105</span><br><span style="color: hsl(120, 100%, 40%);">+  a1_hysteresis: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  a1_time_to_trigger: 640</span><br><span style="color: hsl(120, 100%, 40%);">+  a2_report_type: rsrp</span><br><span style="color: hsl(120, 100%, 40%);">+  a2_report_value: -110</span><br><span style="color: hsl(120, 100%, 40%);">+  a2_hysteresis: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  a2_time_to_trigger: 640</span><br><span style="color: hsl(120, 100%, 40%);">+  a3_report_type: rsrp</span><br><span style="color: hsl(120, 100%, 40%);">+  a3_report_value: 6</span><br><span style="color: hsl(120, 100%, 40%);">+  a3_hysteresis: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  a3_time_to_trigger: 480</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+srsenb:</span><br><span style="color: hsl(120, 100%, 40%);">+  num_prb: 100</span><br><span style="color: hsl(120, 100%, 40%);">+  enable_pcap: false</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+srsue:</span><br><span style="color: hsl(120, 100%, 40%);">+  enable_pcap: false</span><br><span style="color: hsl(120, 100%, 40%);">+  airplane_t_on_ms: -1</span><br><span style="color: hsl(120, 100%, 40%);">+  airplane_t_off_ms: -1</span><br><span style="color: hsl(120, 100%, 40%);">+  num_carriers: 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3cli:</span><br><span style="color: hsl(120, 100%, 40%);">+  time: 60</span><br><span>diff --git a/doc/examples/4g_srsLTE/paths.conf b/doc/examples/4g_srsLTE/paths.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..27c5818</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/paths.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+state_dir: '/var/tmp/osmo-gsm-tester/state'</span><br><span style="color: hsl(120, 100%, 40%);">+suites_dir: './suites'</span><br><span style="color: hsl(120, 100%, 40%);">+scenarios_dir: './scenarios'</span><br><span>diff --git a/doc/examples/4g_srsLTE/resources.conf b/doc/examples/4g_srsLTE/resources.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..a1bdcbc</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/resources.conf</span><br><span>@@ -0,0 +1,44 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# all hardware and interfaces available to this osmo-gsm-tester</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Used to run srsEPC on it:</span><br><span style="color: hsl(120, 100%, 40%);">+run_node:</span><br><span style="color: hsl(120, 100%, 40%);">+- run_type: ssh</span><br><span style="color: hsl(120, 100%, 40%);">+  run_addr: 172.18.50.100</span><br><span style="color: hsl(120, 100%, 40%);">+  ssh_user: jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+  ssh_addr: 172.18.50.100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enb:</span><br><span style="color: hsl(120, 100%, 40%);">+- label: srsENB-zmq</span><br><span style="color: hsl(120, 100%, 40%);">+  type: srsenb</span><br><span style="color: hsl(120, 100%, 40%);">+  rf_dev_type: zmq</span><br><span style="color: hsl(120, 100%, 40%);">+  remote_user: jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+  addr: 172.18.50.101</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+- label: srsENB-B200</span><br><span style="color: hsl(120, 100%, 40%);">+  type: srsenb</span><br><span style="color: hsl(120, 100%, 40%);">+  rf_dev_type: uhd</span><br><span style="color: hsl(120, 100%, 40%);">+  rf_dev_args: 'type=b200,serial=317B9FE'</span><br><span style="color: hsl(120, 100%, 40%);">+  remote_user: jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+  addr: 172.18.50.102</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+modem:</span><br><span style="color: hsl(120, 100%, 40%);">+- label: srsUE-zmq</span><br><span style="color: hsl(120, 100%, 40%);">+  type: srsue</span><br><span style="color: hsl(120, 100%, 40%);">+  rf_dev_type: zmq</span><br><span style="color: hsl(120, 100%, 40%);">+  remote_user: jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+  addr: 172.18.50.100</span><br><span style="color: hsl(120, 100%, 40%);">+  imsi: '001010123456789'</span><br><span style="color: hsl(120, 100%, 40%);">+  ki: '00112233445566778899aabbccddeeff'</span><br><span style="color: hsl(120, 100%, 40%);">+  auth_algo: 'xor'</span><br><span style="color: hsl(120, 100%, 40%);">+  features: ['4g']</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+- label: srsUE-B200</span><br><span style="color: hsl(120, 100%, 40%);">+  type: srsue</span><br><span style="color: hsl(120, 100%, 40%);">+  rf_dev_type: uhd</span><br><span style="color: hsl(120, 100%, 40%);">+  rf_dev_args: 'type=b200,serial=3128FF1'</span><br><span style="color: hsl(120, 100%, 40%);">+  remote_user: jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+  addr: 10.12.1.195</span><br><span style="color: hsl(120, 100%, 40%);">+  imsi: '001010123456789'</span><br><span style="color: hsl(120, 100%, 40%);">+  ki: '00112233445566778899aabbccddeeff'</span><br><span style="color: hsl(120, 100%, 40%);">+  auth_algo: 'xor'</span><br><span style="color: hsl(120, 100%, 40%);">+  features: ['4g']</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/cfg-epc-qci@.conf b/doc/examples/4g_srsLTE/scenarios/cfg-epc-qci@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..8f9c937</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/cfg-epc-qci@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+config:</span><br><span style="color: hsl(120, 100%, 40%);">+  epc:</span><br><span style="color: hsl(120, 100%, 40%);">+    qci: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/cfg-epc-type@.conf b/doc/examples/4g_srsLTE/scenarios/cfg-epc-type@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..89b7fba</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/cfg-epc-type@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+config:</span><br><span style="color: hsl(120, 100%, 40%);">+  epc:</span><br><span style="color: hsl(120, 100%, 40%);">+    type: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/cfg-iperf3-time@.conf b/doc/examples/4g_srsLTE/scenarios/cfg-iperf3-time@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..f46c59a</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/cfg-iperf3-time@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+config:</span><br><span style="color: hsl(120, 100%, 40%);">+  iperf3cli:</span><br><span style="color: hsl(120, 100%, 40%);">+    time: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/cfg-srs-enable-pcap.conf b/doc/examples/4g_srsLTE/scenarios/cfg-srs-enable-pcap.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..6927b80</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/cfg-srs-enable-pcap.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+config:</span><br><span style="color: hsl(120, 100%, 40%);">+  epc:</span><br><span style="color: hsl(120, 100%, 40%);">+    enable_pcap: true</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+    enable_pcap: true</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+    enable_pcap: true</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-enb-args@.conf b/doc/examples/4g_srsLTE/scenarios/mod-enb-args@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..a758d01</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-enb-args@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - additional_args: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-enb-meas-event@.conf b/doc/examples/4g_srsLTE/scenarios/mod-enb-meas-event@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..44f4fcd</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-enb-meas-event@.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - enable_measurements: true</span><br><span style="color: hsl(120, 100%, 40%);">+    ${param1}_report_type: ${param2}</span><br><span style="color: hsl(120, 100%, 40%);">+    ${param1}_report_value: ${param3}</span><br><span style="color: hsl(120, 100%, 40%);">+    ${param1}_hysteresis: ${param4}</span><br><span style="color: hsl(120, 100%, 40%);">+    ${param1}_time_to_trigger: ${param5}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-enb-ncells@.conf b/doc/examples/4g_srsLTE/scenarios/mod-enb-ncells@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..b57b94a</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-enb-ncells@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_cells: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-enb-nprb@.conf b/doc/examples/4g_srsLTE/scenarios/mod-enb-nprb@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..f17347c</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-enb-nprb@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_prb: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-enb-txmode@.conf b/doc/examples/4g_srsLTE/scenarios/mod-enb-txmode@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..e0c8d01</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-enb-txmode@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - transmission_mode: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-modem-args@.conf b/doc/examples/4g_srsLTE/scenarios/mod-modem-args@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..dde7796</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-modem-args@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+  - additional_args: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-srsue-airplane_mode_sim@.conf b/doc/examples/4g_srsLTE/scenarios/mod-srsue-airplane_mode_sim@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..c05fba1</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-srsue-airplane_mode_sim@.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+    - airplane_t_on_ms: ${param1}</span><br><span style="color: hsl(120, 100%, 40%);">+      airplane_t_off_ms: ${param2}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/mod-srsue-ncarriers@.conf b/doc/examples/4g_srsLTE/scenarios/mod-srsue-ncarriers@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..bb6409a</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/mod-srsue-ncarriers@.conf</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_carriers: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/srsenb-rftype@.conf b/doc/examples/4g_srsLTE/scenarios/srsenb-rftype@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..bf64b19</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/srsenb-rftype@.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+resources:</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - type: srsenb</span><br><span style="color: hsl(120, 100%, 40%);">+    rf_dev_type: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/scenarios/srsue-rftype@.conf b/doc/examples/4g_srsLTE/scenarios/srsue-rftype@.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..85a0609</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/scenarios/srsue-rftype@.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+resources:</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+  - type: srsue</span><br><span style="color: hsl(120, 100%, 40%);">+    rf_dev_type: ${param1}</span><br><span>diff --git a/doc/examples/4g_srsLTE/suites/4g/iperf3_dl.py b/doc/examples/4g_srsLTE/suites/4g/iperf3_dl.py</span><br><span>new file mode 100755</span><br><span>index 0000000..88ae82d</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/suites/4g/iperf3_dl.py</span><br><span>@@ -0,0 +1,49 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def print_result_node(result, node_str):</span><br><span style="color: hsl(120, 100%, 40%);">+    sent = result['end']['sum_sent']</span><br><span style="color: hsl(120, 100%, 40%);">+    recv = result['end']['sum_received']</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Result %s:" % node_str)</span><br><span style="color: hsl(120, 100%, 40%);">+    print("\tSEND: %d KB, %d kbps, %d seconds (%s retrans)" % (sent['bytes']/1000, sent['bits_per_second']/1000, sent['seconds'], str(sent.get('retransmits', 'unknown'))))</span><br><span style="color: hsl(120, 100%, 40%);">+    print("\tRECV: %d KB, %d kbps, %d seconds" % (recv['bytes']/1000, recv['bits_per_second']/1000, recv['seconds']))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def print_results(cli_res, srv_res):</span><br><span style="color: hsl(120, 100%, 40%);">+    print_result_node(cli_res, 'client')</span><br><span style="color: hsl(120, 100%, 40%);">+    print_result_node(srv_res, 'server')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+epc = suite.epc()</span><br><span style="color: hsl(120, 100%, 40%);">+enb = suite.enb()</span><br><span style="color: hsl(120, 100%, 40%);">+ue = suite.modem()</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv = suite.iperf3srv({'addr': epc.tun_addr()})</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv.set_run_node(epc.run_node())</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3cli = iperf3srv.create_client()</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3cli.set_run_node(ue.run_node())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+epc.subscriber_add(ue)</span><br><span style="color: hsl(120, 100%, 40%);">+epc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+enb.ue_add(ue)</span><br><span style="color: hsl(120, 100%, 40%);">+enb.start(epc)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for ENB to connect to EPC...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(epc.enb_is_connected, enb)</span><br><span style="color: hsl(120, 100%, 40%);">+print('ENB is connected to EPC')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ue.connect(enb)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv.start()</span><br><span style="color: hsl(120, 100%, 40%);">+proc = iperf3cli.prepare_test_proc(True, ue.netns())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for UE to attach...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ue.is_connected, None)</span><br><span style="color: hsl(120, 100%, 40%);">+print('UE is attached')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print("Running iperf3 client to %s through %s" % (str(iperf3cli), ue.netns()))</span><br><span style="color: hsl(120, 100%, 40%);">+proc.launch_sync()</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv.stop()</span><br><span style="color: hsl(120, 100%, 40%);">+print_results(iperf3cli.get_results(), iperf3srv.get_results())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+max_rate = enb.ue_max_rate(downlink=True)</span><br><span style="color: hsl(120, 100%, 40%);">+res_str = ue.verify_metric(max_rate * 0.8, operation='avg', metric='dl_brate', criterion='gt')</span><br><span style="color: hsl(120, 100%, 40%);">+print(res_str)</span><br><span style="color: hsl(120, 100%, 40%);">+test.set_report_stdout(res_str)</span><br><span>diff --git a/doc/examples/4g_srsLTE/suites/4g/iperf3_ul.py b/doc/examples/4g_srsLTE/suites/4g/iperf3_ul.py</span><br><span>new file mode 100755</span><br><span>index 0000000..597b50d</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/suites/4g/iperf3_ul.py</span><br><span>@@ -0,0 +1,49 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def print_result_node(result, node_str):</span><br><span style="color: hsl(120, 100%, 40%);">+    sent = result['end']['sum_sent']</span><br><span style="color: hsl(120, 100%, 40%);">+    recv = result['end']['sum_received']</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Result %s:" % node_str)</span><br><span style="color: hsl(120, 100%, 40%);">+    print("\tSEND: %d KB, %d kbps, %d seconds (%s retrans)" % (sent['bytes']/1000, sent['bits_per_second']/1000, sent['seconds'], str(sent.get('retransmits', 'unknown'))))</span><br><span style="color: hsl(120, 100%, 40%);">+    print("\tRECV: %d KB, %d kbps, %d seconds" % (recv['bytes']/1000, recv['bits_per_second']/1000, recv['seconds']))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def print_results(cli_res, srv_res):</span><br><span style="color: hsl(120, 100%, 40%);">+    print_result_node(cli_res, 'client')</span><br><span style="color: hsl(120, 100%, 40%);">+    print_result_node(srv_res, 'server')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+epc = suite.epc()</span><br><span style="color: hsl(120, 100%, 40%);">+enb = suite.enb()</span><br><span style="color: hsl(120, 100%, 40%);">+ue = suite.modem()</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv = suite.iperf3srv({'addr': epc.tun_addr()})</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv.set_run_node(epc.run_node())</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3cli = iperf3srv.create_client()</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3cli.set_run_node(ue.run_node())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+epc.subscriber_add(ue)</span><br><span style="color: hsl(120, 100%, 40%);">+epc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+enb.ue_add(ue)</span><br><span style="color: hsl(120, 100%, 40%);">+enb.start(epc)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for ENB to connect to EPC...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(epc.enb_is_connected, enb)</span><br><span style="color: hsl(120, 100%, 40%);">+print('ENB is connected to EPC')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ue.connect(enb)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv.start()</span><br><span style="color: hsl(120, 100%, 40%);">+proc = iperf3cli.prepare_test_proc(False, ue.netns())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for UE to attach...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ue.is_connected, None)</span><br><span style="color: hsl(120, 100%, 40%);">+print('UE is attached')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print("Running iperf3 client to %s through %s" % (str(iperf3cli), ue.netns()))</span><br><span style="color: hsl(120, 100%, 40%);">+proc.launch_sync()</span><br><span style="color: hsl(120, 100%, 40%);">+iperf3srv.stop()</span><br><span style="color: hsl(120, 100%, 40%);">+print_results(iperf3cli.get_results(), iperf3srv.get_results())</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+max_rate = enb.ue_max_rate(downlink=False)</span><br><span style="color: hsl(120, 100%, 40%);">+res_str = ue.verify_metric(max_rate * 0.8, operation='avg', metric='ul_brate', criterion='gt')</span><br><span style="color: hsl(120, 100%, 40%);">+print(res_str)</span><br><span style="color: hsl(120, 100%, 40%);">+test.set_report_stdout(res_str)</span><br><span>diff --git a/doc/examples/4g_srsLTE/suites/4g/ping.py b/doc/examples/4g_srsLTE/suites/4g/ping.py</span><br><span>new file mode 100755</span><br><span>index 0000000..17eee78</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/suites/4g/ping.py</span><br><span>@@ -0,0 +1,25 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+epc = suite.epc()</span><br><span style="color: hsl(120, 100%, 40%);">+enb = suite.enb()</span><br><span style="color: hsl(120, 100%, 40%);">+ue = suite.modem()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+epc.subscriber_add(ue)</span><br><span style="color: hsl(120, 100%, 40%);">+epc.start()</span><br><span style="color: hsl(120, 100%, 40%);">+enb.ue_add(ue)</span><br><span style="color: hsl(120, 100%, 40%);">+enb.start(epc)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for ENB to connect to EPC...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(epc.enb_is_connected, enb)</span><br><span style="color: hsl(120, 100%, 40%);">+print('ENB is connected to EPC')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ue.connect(enb)</span><br><span style="color: hsl(120, 100%, 40%);">+print('waiting for UE to attach...')</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ue.is_connected, None)</span><br><span style="color: hsl(120, 100%, 40%);">+print('UE is attached')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+proc = ue.run_netns_wait('ping', ('ping', '-c', '10', epc.tun_addr()))</span><br><span style="color: hsl(120, 100%, 40%);">+output = proc.get_stdout()</span><br><span style="color: hsl(120, 100%, 40%);">+print(output)</span><br><span style="color: hsl(120, 100%, 40%);">+test.set_report_stdout(output)</span><br><span>diff --git a/doc/examples/4g_srsLTE/suites/4g/suite.conf b/doc/examples/4g_srsLTE/suites/4g/suite.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..e439e99</span><br><span>--- /dev/null</span><br><span>+++ b/doc/examples/4g_srsLTE/suites/4g/suite.conf</span><br><span>@@ -0,0 +1,12 @@</span><br><span style="color: hsl(120, 100%, 40%);">+resources:</span><br><span style="color: hsl(120, 100%, 40%);">+  run_node: # for EPC</span><br><span style="color: hsl(120, 100%, 40%);">+  - times: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  enb:</span><br><span style="color: hsl(120, 100%, 40%);">+  - times: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  modem:</span><br><span style="color: hsl(120, 100%, 40%);">+  - times: 1</span><br><span style="color: hsl(120, 100%, 40%);">+    features:</span><br><span style="color: hsl(120, 100%, 40%);">+    - 4g</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+defaults:</span><br><span style="color: hsl(120, 100%, 40%);">+  timeout: 180s</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17775">change 17775</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17775"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I55d5b1152da201799af21a77ef6c562f97bd94fc </div>
<div style="display:none"> Gerrit-Change-Number: 17775 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>