<p>Pau Espin Pedrol <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/10563">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Neels Hofmeyr: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Replace suites dyn_ts_ipa* and voice using scenario modifiers<br><br>Now that we support modifiers in scenario files, we don't need to<br>duplicate tests and testsuites to dynamically set trx configuration at<br>run time. It can be done more easily with scenario modifiers.<br><br>Change-Id: I80c441bb5b98d5d2e95d4c6ae1efab3e5f3c40d9<br>---<br>M example/default-suites.conf<br>A example/scenarios/mod-bts0-dynts-ipa.conf<br>A example/scenarios/mod-bts0-dynts-osmo.conf<br>A example/scenarios/mod-bts0-ts-tchf.conf<br>A example/scenarios/mod-bts0-ts-tchh.conf<br>D suites/dyn_ts_ipa/lib/testlib.py<br>D suites/dyn_ts_ipa/mo_mt_call_dyn_ipa.py<br>D suites/dyn_ts_ipa/mo_mt_call_dyn_ipa_no_gprs.py<br>D suites/dyn_ts_ipa/suite.conf<br>D suites/dyn_ts_osmo/lib/testlib.py<br>D suites/dyn_ts_osmo/mo_mt_call_dyn_osmo.py<br>D suites/dyn_ts_osmo/mo_mt_call_dyn_osmo_no_gprs.py<br>D suites/dyn_ts_osmo/suite.conf<br>D suites/voice/lib/testlib.py<br>A suites/voice/mo_mt_call.py<br>D suites/voice/mo_mt_call_tchf.py<br>D suites/voice/mo_mt_call_tchh.py<br>17 files changed, 136 insertions(+), 278 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/example/default-suites.conf b/example/default-suites.conf</span><br><span>index fa95daa..7ff8470 100644</span><br><span>--- a/example/default-suites.conf</span><br><span>+++ b/example/default-suites.conf</span><br><span>@@ -2,45 +2,59 @@</span><br><span> - aoip_sms:sysmo</span><br><span> - ussd:sysmo</span><br><span> - aoip_ussd:sysmo</span><br><span style="color: hsl(0, 100%, 40%);">-- voice:sysmo</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_ipa:sysmo</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_osmo:sysmo</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:sysmo+mod-bts0-ts-tchf</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:sysmo+mod-bts0-ts-tchh</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:sysmo+mod-bts0-dynts-ipa</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:sysmo+mod-bts0-dynts-osmo</span><br><span> - gprs:sysmo</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:sysmo+mod-bts0-dynts-ipa</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:sysmo+mod-bts0-dynts-osmo</span><br><span> - sms:trx-b200</span><br><span> - aoip_sms:trx-b200</span><br><span> - ussd:trx-b200</span><br><span> - aoip_ussd:trx-b200</span><br><span style="color: hsl(0, 100%, 40%);">-- voice:trx-b200</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_ipa:trx-b200</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_osmo:trx-b200</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-b200+mod-bts0-ts-tchf</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-b200+mod-bts0-ts-tchh</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-b200+mod-bts0-dynts-ipa</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-b200+mod-bts0-dynts-osmo</span><br><span> - gprs:trx-b200</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:trx-b200+mod-bts0-dynts-ipa</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:trx-b200+mod-bts0-dynts-osmo</span><br><span> - sms:trx-sysmocell5000</span><br><span> - aoip_sms:trx-sysmocell5000</span><br><span> - ussd:trx-sysmocell5000</span><br><span> - aoip_ussd:trx-sysmocell5000</span><br><span style="color: hsl(0, 100%, 40%);">-- voice:trx-sysmocell5000</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_ipa:trx-sysmocell5000</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_osmo:trx-sysmocell5000</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-sysmocell5000+mod-bts0-ts-tchf</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-sysmocell5000+mod-bts0-ts-tchh</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-sysmocell5000+mod-bts0-dynts-ipa</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:trx-sysmocell5000+mod-bts0-dynts-osmo</span><br><span> - gprs:trx-sysmocell5000</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:trx-sysmocell5000+mod-bts0-dynts-ipa</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:trx-sysmocell5000+mod-bts0-dynts-osmo</span><br><span> - sms:octphy</span><br><span> - aoip_sms:octphy</span><br><span> - ussd:octphy</span><br><span> - aoip_ussd:octphy</span><br><span style="color: hsl(0, 100%, 40%);">-- voice:octphy</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:octphy+mod-bts0-ts-tchf</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:octphy+mod-bts0-ts-tchh</span><br><span> - gprs:octphy</span><br><span> - sms:nanobts</span><br><span> - aoip_sms:nanobts+band-1900</span><br><span> - ussd:nanobts+band-1900</span><br><span> - aoip_ussd:nanobts+band-1900</span><br><span style="color: hsl(0, 100%, 40%);">-- voice:nanobts+band-1900</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_ipa:nanobts+band-1900</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:nanobts+band-1900+mod-bts0-ts-tchf</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:nanobts+band-1900+mod-bts0-ts-tchh</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:nanobts+band-1900+mod-bts0-dynts-ipa</span><br><span> - gprs:nanobts+band-1900</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:nanobts+band-1900+mod-bts0-dynts-ipa</span><br><span> - aoip_sms:nanobts+band-900</span><br><span> - ussd:nanobts+band-900</span><br><span> - aoip_ussd:nanobts+band-900</span><br><span style="color: hsl(0, 100%, 40%);">-- voice:nanobts+band-900</span><br><span style="color: hsl(0, 100%, 40%);">-- dyn_ts_ipa:nanobts+band-900</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:nanobts+band-900+mod-bts0-ts-tchf</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:nanobts+band-900+mod-bts0-ts-tchh</span><br><span style="color: hsl(120, 100%, 40%);">+- voice:nanobts+band-900+mod-bts0-dynts-ipa</span><br><span> - gprs:nanobts+band-900</span><br><span style="color: hsl(120, 100%, 40%);">+- gprs:nanobts+band-900+mod-bts0-dynts-ipa</span><br><span> - smpp</span><br><span> - aoip_smpp</span><br><span> - aoip_encryption</span><br><span>diff --git a/example/scenarios/mod-bts0-dynts-ipa.conf b/example/scenarios/mod-bts0-dynts-ipa.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..fcad2c7</span><br><span>--- /dev/null</span><br><span>+++ b/example/scenarios/mod-bts0-dynts-ipa.conf</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_trx: 1</span><br><span style="color: hsl(120, 100%, 40%);">+    trx_list:</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_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_PDCH'</span><br><span>diff --git a/example/scenarios/mod-bts0-dynts-osmo.conf b/example/scenarios/mod-bts0-dynts-osmo.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..26345bd</span><br><span>--- /dev/null</span><br><span>+++ b/example/scenarios/mod-bts0-dynts-osmo.conf</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_trx: 1</span><br><span style="color: hsl(120, 100%, 40%);">+    trx_list:</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_TCH/H_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_TCH/H_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_TCH/H_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_TCH/H_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_TCH/H_PDCH'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F_TCH/H_PDCH'</span><br><span>diff --git a/example/scenarios/mod-bts0-ts-tchf.conf b/example/scenarios/mod-bts0-ts-tchf.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..527b620</span><br><span>--- /dev/null</span><br><span>+++ b/example/scenarios/mod-bts0-ts-tchf.conf</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_trx: 1</span><br><span style="color: hsl(120, 100%, 40%);">+    trx_list:</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: 'TCH/F'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/F'</span><br><span>diff --git a/example/scenarios/mod-bts0-ts-tchh.conf b/example/scenarios/mod-bts0-ts-tchh.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..0709bc4</span><br><span>--- /dev/null</span><br><span>+++ b/example/scenarios/mod-bts0-ts-tchh.conf</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+modifiers:</span><br><span style="color: hsl(120, 100%, 40%);">+  bts:</span><br><span style="color: hsl(120, 100%, 40%);">+  - num_trx: 1</span><br><span style="color: hsl(120, 100%, 40%);">+    trx_list:</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/H'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/H'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/H'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/H'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/H'</span><br><span style="color: hsl(120, 100%, 40%);">+      - phys_chan_config: 'TCH/H'</span><br><span>diff --git a/suites/dyn_ts_ipa/lib/testlib.py b/suites/dyn_ts_ipa/lib/testlib.py</span><br><span>deleted file mode 100755</span><br><span>index 28a4975..0000000</span><br><span>--- a/suites/dyn_ts_ipa/lib/testlib.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,67 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def call_test_setup_run(bts_setup_cb=None, gprs_enable=True):</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr = suite.hlr()</span><br><span style="color: hsl(0, 100%, 40%);">-    bts = suite.bts()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_msc = suite.mgw()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_bsc = suite.mgw()</span><br><span style="color: hsl(0, 100%, 40%);">-    stp = suite.stp()</span><br><span style="color: hsl(0, 100%, 40%);">-    msc = suite.msc(hlr, mgw_msc, stp)</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc = suite.bsc(msc, mgw_bsc, stp)</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mo = suite.modem()</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt = suite.modem()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    if bts_setup_cb is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-        bts_setup_cb(bts)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    if gprs_enable:</span><br><span style="color: hsl(0, 100%, 40%);">-        ggsn = suite.ggsn()</span><br><span style="color: hsl(0, 100%, 40%);">-        sgsn = suite.sgsn(hlr, ggsn)</span><br><span style="color: hsl(0, 100%, 40%);">-        sgsn.bts_add(bts)</span><br><span style="color: hsl(0, 100%, 40%);">-        ggsn.start()</span><br><span style="color: hsl(0, 100%, 40%);">-        sgsn.start()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    stp.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    msc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_msc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_bsc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc.bts_add(bts)</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(bsc.bts_is_connected, bts)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr.subscriber_add(ms_mo)</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr.subscriber_add(ms_mt)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mo.connect(msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.connect(msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mo.log_info()</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.log_info()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    print('waiting for modems to attach...')</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mo.is_connected, msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mt.is_connected, msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(msc.subscriber_attached, ms_mo, ms_mt)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-    mo_cid = ms_mo.call_dial(ms_mt)</span><br><span style="color: hsl(0, 100%, 40%);">-    mt_cid = ms_mt.call_wait_incoming(ms_mo)</span><br><span style="color: hsl(0, 100%, 40%);">-    print('dial success')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.call_answer(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mo.call_is_active, mo_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mt.call_is_active, mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    print('answer success, call established and ongoing')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    sleep(5) # maintain the call active for 5 seconds</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.call_hangup(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-    print('hangup success')</span><br><span>diff --git a/suites/dyn_ts_ipa/mo_mt_call_dyn_ipa.py b/suites/dyn_ts_ipa/mo_mt_call_dyn_ipa.py</span><br><span>deleted file mode 100755</span><br><span>index 4fe4e46..0000000</span><br><span>--- a/suites/dyn_ts_ipa/mo_mt_call_dyn_ipa.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,19 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-import testlib</span><br><span style="color: hsl(0, 100%, 40%);">-suite.test_import_modules_register_for_cleanup(testlib)</span><br><span style="color: hsl(0, 100%, 40%);">-from testlib import call_test_setup_run</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def my_bts_setup(bts):</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_num_trx(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 1, 'SDCCH8')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 2, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 3, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 4, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 5, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 6, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 7, 'PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-call_test_setup_run(bts_setup_cb=my_bts_setup, gprs_enable=True)</span><br><span>diff --git a/suites/dyn_ts_ipa/mo_mt_call_dyn_ipa_no_gprs.py b/suites/dyn_ts_ipa/mo_mt_call_dyn_ipa_no_gprs.py</span><br><span>deleted file mode 100755</span><br><span>index c1349ae..0000000</span><br><span>--- a/suites/dyn_ts_ipa/mo_mt_call_dyn_ipa_no_gprs.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,21 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-import testlib</span><br><span style="color: hsl(0, 100%, 40%);">-suite.test_import_modules_register_for_cleanup(testlib)</span><br><span style="color: hsl(0, 100%, 40%);">-from testlib import call_test_setup_run</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def my_bts_setup(bts):</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_num_trx(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 1, 'SDCCH8')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 2, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 3, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 4, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 5, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 6, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 7, 'TCH/F_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-# Check that dynamic timeslots work fine with gprs disabled.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-call_test_setup_run(bts_setup_cb=my_bts_setup, gprs_enable=False)</span><br><span>diff --git a/suites/dyn_ts_ipa/suite.conf b/suites/dyn_ts_ipa/suite.conf</span><br><span>deleted file mode 100644</span><br><span>index 4ac2436..0000000</span><br><span>--- a/suites/dyn_ts_ipa/suite.conf</span><br><span>+++ /dev/null</span><br><span>@@ -1,9 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-resources:</span><br><span style="color: hsl(0, 100%, 40%);">-  ip_address:</span><br><span style="color: hsl(0, 100%, 40%);">-  - times: 8 # msc, bsc, hlr, stp, mgw*2, sgsn, ggsn</span><br><span style="color: hsl(0, 100%, 40%);">-  bts:</span><br><span style="color: hsl(0, 100%, 40%);">-  - times: 1</span><br><span style="color: hsl(0, 100%, 40%);">-  modem:</span><br><span style="color: hsl(0, 100%, 40%);">-  - times: 2</span><br><span style="color: hsl(0, 100%, 40%);">-    features:</span><br><span style="color: hsl(0, 100%, 40%);">-    - voice</span><br><span>diff --git a/suites/dyn_ts_osmo/lib/testlib.py b/suites/dyn_ts_osmo/lib/testlib.py</span><br><span>deleted file mode 120000</span><br><span>index 8f0bc5a..0000000</span><br><span>--- a/suites/dyn_ts_osmo/lib/testlib.py</span><br><span>+++ /dev/null</span><br><span>@@ -1 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-../../dyn_ts_ipa/lib/testlib.py</span><br><span>\ No newline at end of file</span><br><span>diff --git a/suites/dyn_ts_osmo/mo_mt_call_dyn_osmo.py b/suites/dyn_ts_osmo/mo_mt_call_dyn_osmo.py</span><br><span>deleted file mode 100755</span><br><span>index b9b7935..0000000</span><br><span>--- a/suites/dyn_ts_osmo/mo_mt_call_dyn_osmo.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,19 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-import testlib</span><br><span style="color: hsl(0, 100%, 40%);">-suite.test_import_modules_register_for_cleanup(testlib)</span><br><span style="color: hsl(0, 100%, 40%);">-from testlib import call_test_setup_run</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def my_bts_setup(bts):</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_num_trx(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 1, 'SDCCH8')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 2, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 3, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 4, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 5, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 6, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 7, 'PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-call_test_setup_run(bts_setup_cb=my_bts_setup, gprs_enable=True)</span><br><span>diff --git a/suites/dyn_ts_osmo/mo_mt_call_dyn_osmo_no_gprs.py b/suites/dyn_ts_osmo/mo_mt_call_dyn_osmo_no_gprs.py</span><br><span>deleted file mode 100755</span><br><span>index d80d27a..0000000</span><br><span>--- a/suites/dyn_ts_osmo/mo_mt_call_dyn_osmo_no_gprs.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,21 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-import testlib</span><br><span style="color: hsl(0, 100%, 40%);">-suite.test_import_modules_register_for_cleanup(testlib)</span><br><span style="color: hsl(0, 100%, 40%);">-from testlib import call_test_setup_run</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def my_bts_setup(bts):</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_num_trx(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 1, 'SDCCH8')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 2, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 3, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 4, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 5, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 6, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 7, 'TCH/F_TCH/H_PDCH')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-# Check that dynamic timeslots work fine with gprs disabled.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-call_test_setup_run(bts_setup_cb=my_bts_setup, gprs_enable=False)</span><br><span>diff --git a/suites/dyn_ts_osmo/suite.conf b/suites/dyn_ts_osmo/suite.conf</span><br><span>deleted file mode 100644</span><br><span>index 4ac2436..0000000</span><br><span>--- a/suites/dyn_ts_osmo/suite.conf</span><br><span>+++ /dev/null</span><br><span>@@ -1,9 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-resources:</span><br><span style="color: hsl(0, 100%, 40%);">-  ip_address:</span><br><span style="color: hsl(0, 100%, 40%);">-  - times: 8 # msc, bsc, hlr, stp, mgw*2, sgsn, ggsn</span><br><span style="color: hsl(0, 100%, 40%);">-  bts:</span><br><span style="color: hsl(0, 100%, 40%);">-  - times: 1</span><br><span style="color: hsl(0, 100%, 40%);">-  modem:</span><br><span style="color: hsl(0, 100%, 40%);">-  - times: 2</span><br><span style="color: hsl(0, 100%, 40%);">-    features:</span><br><span style="color: hsl(0, 100%, 40%);">-    - voice</span><br><span>diff --git a/suites/voice/lib/testlib.py b/suites/voice/lib/testlib.py</span><br><span>deleted file mode 100755</span><br><span>index f949809..0000000</span><br><span>--- a/suites/voice/lib/testlib.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,60 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def call_test_setup_run(bts_setup_cb=None):</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr = suite.hlr()</span><br><span style="color: hsl(0, 100%, 40%);">-    bts = suite.bts()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_msc = suite.mgw()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_bsc = suite.mgw()</span><br><span style="color: hsl(0, 100%, 40%);">-    stp = suite.stp()</span><br><span style="color: hsl(0, 100%, 40%);">-    msc = suite.msc(hlr, mgw_msc, stp)</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc = suite.bsc(msc, mgw_bsc, stp)</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mo = suite.modem()</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt = suite.modem()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    if bts_setup_cb is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-        bts_setup_cb(bts)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    stp.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    msc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_msc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw_bsc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc.bts_add(bts)</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc.start()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.start()</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(bsc.bts_is_connected, bts)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr.subscriber_add(ms_mo)</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr.subscriber_add(ms_mt)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mo.connect(msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.connect(msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mo.log_info()</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.log_info()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    print('waiting for modems to attach...')</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mo.is_connected, msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mt.is_connected, msc.mcc_mnc())</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(msc.subscriber_attached, ms_mo, ms_mt)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-    mo_cid = ms_mo.call_dial(ms_mt)</span><br><span style="color: hsl(0, 100%, 40%);">-    mt_cid = ms_mt.call_wait_incoming(ms_mo)</span><br><span style="color: hsl(0, 100%, 40%);">-    print('dial success')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.call_answer(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mo.call_is_active, mo_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(ms_mt.call_is_active, mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    print('answer success, call established and ongoing')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    sleep(5) # maintain the call active for 5 seconds</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    ms_mt.call_hangup(mt_cid)</span><br><span style="color: hsl(0, 100%, 40%);">-    wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-    print('hangup success')</span><br><span>diff --git a/suites/voice/mo_mt_call.py b/suites/voice/mo_mt_call.py</span><br><span>new file mode 100755</span><br><span>index 0000000..aeda80d</span><br><span>--- /dev/null</span><br><span>+++ b/suites/voice/mo_mt_call.py</span><br><span>@@ -0,0 +1,56 @@</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%);">+assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0</span><br><span style="color: hsl(120, 100%, 40%);">+mo_cid = ms_mo.call_dial(ms_mt)</span><br><span style="color: hsl(120, 100%, 40%);">+mt_cid = ms_mt.call_wait_incoming(ms_mo)</span><br><span style="color: hsl(120, 100%, 40%);">+print('dial success')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mt.call_answer(mt_cid)</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ms_mo.call_is_active, mo_cid)</span><br><span style="color: hsl(120, 100%, 40%);">+wait(ms_mt.call_is_active, mt_cid)</span><br><span style="color: hsl(120, 100%, 40%);">+print('answer success, call established and ongoing')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sleep(5) # maintain the call active for 5 seconds</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)</span><br><span style="color: hsl(120, 100%, 40%);">+ms_mt.call_hangup(mt_cid)</span><br><span style="color: hsl(120, 100%, 40%);">+wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+print('hangup success')</span><br><span>diff --git a/suites/voice/mo_mt_call_tchf.py b/suites/voice/mo_mt_call_tchf.py</span><br><span>deleted file mode 100755</span><br><span>index af55dfd..0000000</span><br><span>--- a/suites/voice/mo_mt_call_tchf.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,19 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-import testlib</span><br><span style="color: hsl(0, 100%, 40%);">-suite.test_import_modules_register_for_cleanup(testlib)</span><br><span style="color: hsl(0, 100%, 40%);">-from testlib import call_test_setup_run</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def my_bts_setup(bts):</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_num_trx(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 1, 'SDCCH8')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 2, 'TCH/F')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 3, 'TCH/F')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 4, 'TCH/F')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 5, 'TCH/F')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 6, 'TCH/F')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 7, 'TCH/F')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-call_test_setup_run(bts_setup_cb=my_bts_setup)</span><br><span>diff --git a/suites/voice/mo_mt_call_tchh.py b/suites/voice/mo_mt_call_tchh.py</span><br><span>deleted file mode 100755</span><br><span>index 43d0760..0000000</span><br><span>--- a/suites/voice/mo_mt_call_tchh.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,19 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python3</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.testenv import *</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-import testlib</span><br><span style="color: hsl(0, 100%, 40%);">-suite.test_import_modules_register_for_cleanup(testlib)</span><br><span style="color: hsl(0, 100%, 40%);">-from testlib import call_test_setup_run</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-def my_bts_setup(bts):</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_num_trx(1)</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 1, 'SDCCH8')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 2, 'TCH/H')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 3, 'TCH/H')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 4, 'TCH/H')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 5, 'TCH/H')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 6, 'TCH/H')</span><br><span style="color: hsl(0, 100%, 40%);">-    bts.set_trx_phy_channel(0, 7, 'TCH/H')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-call_test_setup_run(bts_setup_cb=my_bts_setup)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10563">change 10563</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/10563"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I80c441bb5b98d5d2e95d4c6ae1efab3e5f3c40d9 </div>
<div style="display:none"> Gerrit-Change-Number: 10563 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>