diff options
-rw-r--r-- | example/default-suites.conf | 8 | ||||
-rw-r--r-- | example/scenarios/mod-bts0-dynts67-ipa.conf | 13 | ||||
-rw-r--r-- | example/scenarios/mod-bts0-dynts67-osmo.conf | 13 | ||||
-rw-r--r-- | suites/dynts/suite.conf | 10 | ||||
-rwxr-xr-x | suites/dynts/switch_tch_pdch.py | 98 |
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!') |