blob: 7be4be7ae41d365c0178f75e8974e60ea12bbfce [file] [log] [blame]
Pau Espin Pedrol7fa19ac2018-09-21 12:25:54 +02001#!/usr/bin/env python3
2from osmo_gsm_tester.testenv import *
3
4
5def activate_pdp(ms_mo, ms_mt):
6 # We need to use inet46 since ofono qmi only uses ipv4v6 eua (OS#2713)
7 ctx_id_v4_mo = ms_mo.activate_context(apn='inet46', protocol=ms_mo.CTX_PROT_IPv4)
8 print('ms_mo pdp ctx %r activated' % repr(ctx_id_v4_mo))
9 ctx_id_v4_mt = ms_mt.activate_context(apn='inet46', protocol=ms_mt.CTX_PROT_IPv4)
10 print('ms_mt pdp ctx %r activated' % repr(ctx_id_v4_mt))
11 sleep(5)
12 ms_mo.deactivate_context(ctx_id_v4_mo)
13 ms_mt.deactivate_context(ctx_id_v4_mt)
14
15def make_call(ms_mo, ms_mt):
16 assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0
17 mo_cid = ms_mo.call_dial(ms_mt)
18 mt_cid = ms_mt.call_wait_incoming(ms_mo)
19 print('dial success')
20
21 assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)
22 ms_mt.call_answer(mt_cid)
23 wait(ms_mo.call_is_active, mo_cid)
24 wait(ms_mt.call_is_active, mt_cid)
25 print('answer success, call established and ongoing')
26
27 sleep(5) # maintain the call active for 5 seconds
28
29 assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)
30 ms_mo.call_hangup(mo_cid)
31 ms_mt.call_hangup(mt_cid)
32 wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)
33 print('hangup success')
34
Pau Espin Pedrol40c7bc72020-05-05 13:41:42 +020035hlr = tenv.hlr()
36bts = tenv.bts()
Pau Espin Pedrol7fa19ac2018-09-21 12:25:54 +020037pcu = bts.pcu()
Pau Espin Pedrol40c7bc72020-05-05 13:41:42 +020038mgw_msc = tenv.mgw()
39mgw_bsc = tenv.mgw()
40stp = tenv.stp()
41ggsn = tenv.ggsn()
42sgsn = tenv.sgsn(hlr, ggsn)
43msc = tenv.msc(hlr, mgw_msc, stp)
44bsc = tenv.bsc(msc, mgw_bsc, stp)
45ms_mo = tenv.modem()
46ms_mt = tenv.modem()
Pau Espin Pedrol7fa19ac2018-09-21 12:25:54 +020047
48bsc.bts_add(bts)
49sgsn.bts_add(bts)
50
51print('start network...')
52hlr.start()
53stp.start()
54ggsn.start()
55sgsn.start()
56msc.start()
57mgw_msc.start()
58mgw_bsc.start()
59bsc.start()
60
61bts.start()
62wait(bsc.bts_is_connected, bts)
63print('Waiting for bts to be ready...')
64wait(bts.ready_for_pcu)
65pcu.start()
66
67hlr.subscriber_add(ms_mo)
68hlr.subscriber_add(ms_mt)
69
70ms_mo.connect(msc.mcc_mnc())
71ms_mt.connect(msc.mcc_mnc())
72ms_mo.attach()
73ms_mt.attach()
74
75ms_mo.log_info()
76ms_mt.log_info()
77
78print('waiting for modems to attach...')
79wait(ms_mo.is_connected, msc.mcc_mnc())
80wait(ms_mt.is_connected, msc.mcc_mnc())
81wait(msc.subscriber_attached, ms_mo)
82wait(msc.subscriber_attached, ms_mt)
83
84print('waiting for modems to attach to data services...')
85wait(ms_mo.is_attached)
86wait(ms_mt.is_attached)
87
88print('1: activate_pdp')
89activate_pdp(ms_mo, ms_mt)
90print('2: make_call')
91make_call(ms_mo, ms_mt)
92print('3: Wait 30 seconds to let PCU handle the PDCH channels again')
93sleep(30)
94print('3: activate_pdp')
95activate_pdp(ms_mo, ms_mt)
96print('4: make_call')
97make_call(ms_mo, ms_mt)
98print('Done!')