aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--example/default-suites.conf8
-rw-r--r--example/scenarios/mod-bts0-dynts67-ipa.conf13
-rw-r--r--example/scenarios/mod-bts0-dynts67-osmo.conf13
-rw-r--r--suites/dynts/suite.conf10
-rwxr-xr-xsuites/dynts/switch_tch_pdch.py98
5 files changed, 142 insertions, 0 deletions
diff --git a/example/default-suites.conf b/example/default-suites.conf
index 1857ba5..74f54a2 100644
--- a/example/default-suites.conf
+++ b/example/default-suites.conf
@@ -12,6 +12,8 @@
- gprs:sysmo
- gprs:sysmo+mod-bts0-dynts-ipa
- gprs:sysmo+mod-bts0-dynts-osmo
+- dynts:sysmo+mod-bts0-dynts67-ipa.conf+cfg-codec-fr1
+- dynts:sysmo+mod-bts0-dynts67-osmo.conf+cfg-codec-fr1
- nitb_sms:trx-b200
- sms:trx-b200
- nitb_ussd:trx-b200
@@ -26,6 +28,8 @@
- gprs:trx-b200
- gprs:trx-b200+mod-bts0-dynts-ipa
- gprs:trx-b200+mod-bts0-dynts-osmo
+- dynts:trx-b200+mod-bts0-dynts67-ipa.conf+cfg-codec-fr1
+- dynts:trx-b200+mod-bts0-dynts67-osmo.conf+cfg-codec-fr1
- nitb_sms:trx-sysmocell5000
- sms:trx-sysmocell5000
- nitb_ussd:trx-sysmocell5000
@@ -40,6 +44,8 @@
- gprs:trx-sysmocell5000
- gprs:trx-sysmocell5000+mod-bts0-dynts-ipa
- gprs:trx-sysmocell5000+mod-bts0-dynts-osmo
+- dynts:trx-sysmocell5000+mod-bts0-dynts67-ipa.conf+cfg-codec-fr1
+- dynts:trx-sysmocell5000+mod-bts0-dynts67-osmo.conf+cfg-codec-fr1
- nitb_sms:nanobts
- sms:nanobts+band-1900
- nitb_ussd:nanobts+band-1900
@@ -51,6 +57,7 @@
- voice:nanobts+band-1900+mod-bts0-dynts-ipa
- gprs:nanobts+band-1900
- gprs:nanobts+band-1900+mod-bts0-dynts-ipa
+- dynts:nanobts+band-1900+mod-bts0-dynts67-ipa.conf+cfg-codec-fr1
- sms:nanobts+band-900
- nitb_ussd:nanobts+band-900
- ussd:nanobts+band-900
@@ -63,6 +70,7 @@
- gprs:nanobts+band-900
- gprs:nanobts+band-900+mod-bts0-dynts-ipa
- gprs:nanobts+band-900+mod-bts0-numtrx2+mod-bts0-chanallocdescend
+- dynts:nanobts+band-900+mod-bts0-dynts67-ipa.conf+cfg-codec-fr1
- nitb_smpp
- smpp
- encryption
diff --git a/example/scenarios/mod-bts0-dynts67-ipa.conf b/example/scenarios/mod-bts0-dynts67-ipa.conf
new file mode 100644
index 0000000..087b3b0
--- /dev/null
+++ b/example/scenarios/mod-bts0-dynts67-ipa.conf
@@ -0,0 +1,13 @@
+modifiers:
+ bts:
+ - num_trx: 1
+ trx_list:
+ - timeslot_list:
+ - phys_chan_config: 'CCCH+SDCCH4'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'TCH/F_PDCH'
+ - phys_chan_config: 'TCH/F_PDCH'
diff --git a/example/scenarios/mod-bts0-dynts67-osmo.conf b/example/scenarios/mod-bts0-dynts67-osmo.conf
new file mode 100644
index 0000000..3153120
--- /dev/null
+++ b/example/scenarios/mod-bts0-dynts67-osmo.conf
@@ -0,0 +1,13 @@
+modifiers:
+ bts:
+ - num_trx: 1
+ trx_list:
+ - timeslot_list:
+ - phys_chan_config: 'CCCH+SDCCH4'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'SDCCH8'
+ - phys_chan_config: 'TCH/F_TCH/H_PDCH'
+ - phys_chan_config: 'TCH/F_TCH/H_PDCH'
diff --git a/suites/dynts/suite.conf b/suites/dynts/suite.conf
new file mode 100644
index 0000000..3b32480
--- /dev/null
+++ b/suites/dynts/suite.conf
@@ -0,0 +1,10 @@
+resources:
+ ip_address:
+ - times: 8 # msc, bsc, hlr, stp, mgw*2, sgsn, ggsn
+ bts:
+ - times: 1
+ modem:
+ - times: 2
+ features:
+ - gprs
+ - voice
diff --git a/suites/dynts/switch_tch_pdch.py b/suites/dynts/switch_tch_pdch.py
new file mode 100755
index 0000000..f0bbd38
--- /dev/null
+++ b/suites/dynts/switch_tch_pdch.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python3
+from osmo_gsm_tester.testenv import *
+
+
+def activate_pdp(ms_mo, ms_mt):
+ # We need to use inet46 since ofono qmi only uses ipv4v6 eua (OS#2713)
+ ctx_id_v4_mo = ms_mo.activate_context(apn='inet46', protocol=ms_mo.CTX_PROT_IPv4)
+ print('ms_mo pdp ctx %r activated' % repr(ctx_id_v4_mo))
+ ctx_id_v4_mt = ms_mt.activate_context(apn='inet46', protocol=ms_mt.CTX_PROT_IPv4)
+ print('ms_mt pdp ctx %r activated' % repr(ctx_id_v4_mt))
+ sleep(5)
+ ms_mo.deactivate_context(ctx_id_v4_mo)
+ ms_mt.deactivate_context(ctx_id_v4_mt)
+
+def make_call(ms_mo, ms_mt):
+ assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0
+ mo_cid = ms_mo.call_dial(ms_mt)
+ mt_cid = ms_mt.call_wait_incoming(ms_mo)
+ print('dial success')
+
+ assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)
+ ms_mt.call_answer(mt_cid)
+ wait(ms_mo.call_is_active, mo_cid)
+ wait(ms_mt.call_is_active, mt_cid)
+ print('answer success, call established and ongoing')
+
+ sleep(5) # maintain the call active for 5 seconds
+
+ assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)
+ ms_mo.call_hangup(mo_cid)
+ ms_mt.call_hangup(mt_cid)
+ wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)
+ print('hangup success')
+
+hlr = suite.hlr()
+bts = suite.bts()
+pcu = bts.pcu()
+mgw_msc = suite.mgw()
+mgw_bsc = suite.mgw()
+stp = suite.stp()
+ggsn = suite.ggsn()
+sgsn = suite.sgsn(hlr, ggsn)
+msc = suite.msc(hlr, mgw_msc, stp)
+bsc = suite.bsc(msc, mgw_bsc, stp)
+ms_mo = suite.modem()
+ms_mt = suite.modem()
+
+bsc.bts_add(bts)
+sgsn.bts_add(bts)
+
+print('start network...')
+hlr.start()
+stp.start()
+ggsn.start()
+sgsn.start()
+msc.start()
+mgw_msc.start()
+mgw_bsc.start()
+bsc.start()
+
+bts.start()
+wait(bsc.bts_is_connected, bts)
+print('Waiting for bts to be ready...')
+wait(bts.ready_for_pcu)
+pcu.start()
+
+hlr.subscriber_add(ms_mo)
+hlr.subscriber_add(ms_mt)
+
+ms_mo.connect(msc.mcc_mnc())
+ms_mt.connect(msc.mcc_mnc())
+ms_mo.attach()
+ms_mt.attach()
+
+ms_mo.log_info()
+ms_mt.log_info()
+
+print('waiting for modems to attach...')
+wait(ms_mo.is_connected, msc.mcc_mnc())
+wait(ms_mt.is_connected, msc.mcc_mnc())
+wait(msc.subscriber_attached, ms_mo)
+wait(msc.subscriber_attached, ms_mt)
+
+print('waiting for modems to attach to data services...')
+wait(ms_mo.is_attached)
+wait(ms_mt.is_attached)
+
+print('1: activate_pdp')
+activate_pdp(ms_mo, ms_mt)
+print('2: make_call')
+make_call(ms_mo, ms_mt)
+print('3: Wait 30 seconds to let PCU handle the PDCH channels again')
+sleep(30)
+print('3: activate_pdp')
+activate_pdp(ms_mo, ms_mt)
+print('4: make_call')
+make_call(ms_mo, ms_mt)
+print('Done!')