This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20670 ) Change subject: sysmocom: Introduce test to verify emergency call preemption ...................................................................... sysmocom: Introduce test to verify emergency call preemption Change-Id: I59993e65b3fd34fb2c3e5b002ab9666db9b7bad5 --- A sysmocom/suites/emergency/emergency_preemptive_call.py M sysmocom/suites/emergency/suite.conf 2 files changed, 100 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/sysmocom/suites/emergency/emergency_preemptive_call.py b/sysmocom/suites/emergency/emergency_preemptive_call.py new file mode 100755 index 0000000..b4fba4b --- /dev/null +++ b/sysmocom/suites/emergency/emergency_preemptive_call.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +from osmo_gsm_tester.testenv import * + +hlr = tenv.hlr() +bts = tenv.bts() +mgw_msc = tenv.mgw() +mgw_bsc = tenv.mgw() +stp = tenv.stp() +msc = tenv.msc(hlr, mgw_msc, stp) +bsc = tenv.bsc(msc, mgw_bsc, stp) +ms_mo = tenv.modem() +ms_mt = tenv.modem() +ms_mo_emerg = tenv.modem() +ms_mt_emerg = tenv.modem() + +# Configure timeslots so that only 1 concurrent call (MO MT, 2 MS) is allowed +bts.set_num_trx(1) +bts.set_trx_phy_channel(0, 0, 'CCCH+SDCCH4') +bts.set_trx_phy_channel(0, 1, 'TCH/F') +bts.set_trx_phy_channel(0, 2, 'TCH/F') +bts.set_trx_phy_channel(0, 3, 'PDCH') +bts.set_trx_phy_channel(0, 4, 'PDCH') +bts.set_trx_phy_channel(0, 5, 'PDCH') +bts.set_trx_phy_channel(0, 6, 'PDCH') +bts.set_trx_phy_channel(0, 7, 'PDCH') + +hlr.start() +stp.start() + +# Set MSC to route emergency call to ms_mt_emerg: +msc.set_emergency_call_msisdn(ms_mt_emerg.msisdn()) +msc.start() + +mgw_msc.start() +mgw_bsc.start() + +bsc.bts_add(bts) +bsc.start() + +bts.start() +wait(bsc.bts_is_connected, bts) + +hlr.subscriber_add(ms_mo) +hlr.subscriber_add(ms_mt) +hlr.subscriber_add(ms_mo_emerg) +hlr.subscriber_add(ms_mt_emerg) + +ms_mo.connect(msc.mcc_mnc()) +ms_mt.connect(msc.mcc_mnc()) +ms_mo_emerg.connect(msc.mcc_mnc()) +ms_mt_emerg.connect(msc.mcc_mnc()) + +ms_mo.log_info() +ms_mt.log_info() +ms_mo_emerg.log_info() +ms_mt_emerg.log_info() + +print('waiting for modems to attach...') +wait(ms_mo.is_registered, msc.mcc_mnc()) +wait(ms_mt.is_registered, msc.mcc_mnc()) +wait(ms_mo_emerg.is_registered, msc.mcc_mnc()) +wait(ms_mt_emerg.is_registered, msc.mcc_mnc()) +wait(msc.subscriber_attached, ms_mo, ms_mt, ms_mo_emerg, ms_mt_emerg) + +# Initiating first call between ms_mo and ms_mt. It should be dropped when later an emergency call comes in +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) +assert len(ms_mo.call_id_list()) == 1 and len(ms_mt.call_id_list()) == 1 + +sleep(5) # maintain the normal call active for 5 seconds + +assert len(ms_mo.call_id_list()) == 1 and len(ms_mt.call_id_list()) == 1 +assert len(ms_mo_emerg.call_id_list()) == 0 and len(ms_mt_emerg.call_id_list()) == 0 +# Calling emergency number should be redirected to ms_mt as configured further above: +emerg_numbers = ms_mo_emerg.emergency_numbers() +assert len(emerg_numbers) > 0 +print('dialing Emergency Number %s' % (emerg_numbers[0])) +mo_cid_emerg = ms_mo_emerg.call_dial(emerg_numbers[0]) +mt_cid_emerg = ms_mt_emerg.call_wait_incoming(ms_mo_emerg) +print('dial success') +assert not ms_mo_emerg.call_is_active(mo_cid_emerg) and not ms_mt_emerg.call_is_active(mt_cid_emerg) +ms_mt_emerg.call_answer(mt_cid_emerg) +wait(ms_mo_emerg.call_is_active, mo_cid_emerg) +wait(ms_mt_emerg.call_is_active, mt_cid_emerg) +print('answer success, call established and ongoing') + +# Now the emergency call is ongoing, and the previous one should have been gone: +assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0 + +sleep(5) # maintain the emergency call active for 5 seconds + +assert ms_mo_emerg.call_is_active(mo_cid_emerg) and ms_mt.call_is_active(mt_cid_emerg) +ms_mt_emerg.call_hangup(mt_cid_emerg) +wait(lambda: len(ms_mo_emerg.call_id_list()) == 0 and len(ms_mt_emerg.call_id_list()) == 0) +print('hangup success') diff --git a/sysmocom/suites/emergency/suite.conf b/sysmocom/suites/emergency/suite.conf index eb0de71..8b9a712 100644 --- a/sysmocom/suites/emergency/suite.conf +++ b/sysmocom/suites/emergency/suite.conf @@ -4,7 +4,7 @@ bts: - times: 1 modem: - - times: 2 + - times: 4 features: - voice modifiers: -- To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20670 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Change-Id: I59993e65b3fd34fb2c3e5b002ab9666db9b7bad5 Gerrit-Change-Number: 20670 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201015/826a9db9/attachment.htm>