Change in osmo-gsm-tester[master]: sysmocom: Introduce test to verify emergency call preemption

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.org
Thu Oct 15 17:02:51 UTC 2020


pespin has uploaded this change for review. ( 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(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/70/20670/1

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-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201015/85532eea/attachment.htm>


More information about the gerrit-log mailing list