blob: cfa5d6c0f780d9f34040d8379533057daea98d13 [file] [log] [blame]
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +02001#!/usr/bin/env python3
2from osmo_gsm_tester.test import *
3hlr = suite.hlr()
4bts = suite.bts()
5mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr())
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +01006mgw_bsc = suite.mgw()
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +02007msc = suite.msc(hlr, mgcpgw)
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +01008bsc = suite.bsc(msc, mgw_bsc)
Neels Hofmeyr38b051c2017-06-13 16:26:06 +02009stp = suite.stp()
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020010modems = suite.modems(int(prompt('How many modems?')))
11
12hlr.start()
Neels Hofmeyr38b051c2017-06-13 16:26:06 +020013stp.start()
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020014msc.start()
Pau Espin Pedrol1ba2ded2017-05-30 16:39:44 +020015mgcpgw.start()
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +010016mgw_bsc.start()
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020017
18bsc.bts_add(bts)
19bsc.start()
20
21bts.start()
22
23for m in modems:
24 hlr.subscriber_add(m)
Pau Espin Pedrol0e57aad2017-05-29 14:25:22 +020025 m.connect(msc.mcc_mnc())
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020026
27while True:
Pau Espin Pedrold27de2b2017-11-06 17:42:41 +010028 cmd = prompt('Enter command: (q)uit (s)ms (g)et-registered (w)ait-registered, call-list [<ms_msisdn>], call-dial <src_msisdn> <dst_msisdn>, call-wait-incoming <src_msisdn> <dst_msisdn>, call-answer <mt_msisdn> <call_id>, call-hangup <ms_msisdn> <call_id>, ussd <command>')
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020029 cmd = cmd.strip().lower()
30
31 if not cmd:
32 continue
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020033
34 params = cmd.split()
35
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020036 if 'quit'.startswith(cmd):
37 break
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020038
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020039 elif 'wait-registered'.startswith(cmd):
40 try:
Pau Espin Pedrol0e57aad2017-05-29 14:25:22 +020041 for m in modems:
42 wait(m.is_connected, msc.mcc_mnc())
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020043 wait(msc.subscriber_attached, *modems)
44 except Timeout:
45 print('Timeout while waiting for registration.')
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020046
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020047 elif 'get-registered'.startswith(cmd):
48 print(msc.imsi_list_attached())
49 print('RESULT: %s' %
50 ('All modems are registered.' if msc.subscriber_attached(*modems)
51 else 'Some modem(s) not registered yet.'))
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020052
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020053 elif 'sms'.startswith(cmd):
54 for mo in modems:
55 for mt in modems:
56 mo.sms_send(mt.msisdn, 'to ' + mt.name())
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020057
58 elif cmd.startswith('call-list'):
59 if len(params) != 1 and len(params) != 2:
60 print('wrong format')
61 continue
62 for ms in modems:
63 if len(params) == 1 or str(ms.msisdn) == params[1]:
64 print('call-list: %r %r' % (ms.name(), ms.call_id_list()))
65
66 elif cmd.startswith('call-dial'):
67 if len(params) != 3:
68 print('wrong format')
69 continue
70 src_msisdn, dst_msisdn = params[1:]
71 for mo in modems:
72 if str(mo.msisdn) == src_msisdn:
73 print('dialing %s->%s' % (src_msisdn, dst_msisdn))
74 call_id = mo.call_dial(dst_msisdn)
75 print('dial success: call_id=%r' % call_id)
76
77 elif cmd.startswith('call-wait-incoming'):
78 if len(params) != 3:
79 print('wrong format')
80 continue
81 src_msisdn, dst_msisdn = params[1:]
82 for mt in modems:
83 if str(mt.msisdn) == dst_msisdn:
84 print('waiting for incoming %s->%s' % (src_msisdn, dst_msisdn))
85 call_id = mt.call_wait_incoming(src_msisdn)
86 print('incoming call success: call_id=%r' % call_id)
87
88 elif cmd.startswith('call-answer'):
89 if len(params) != 3:
90 print('wrong format')
91 continue
92 mt_msisdn, call_id = params[1:]
93 for mt in modems:
94 if str(mt.msisdn) == mt_msisdn:
95 print('answering %s %r' % (mt.name(), call_id))
96 mt.call_answer(call_id)
97
98 elif cmd.startswith('call-hangup'):
99 if len(params) != 3:
100 print('wrong format')
101 continue
102 ms_msisdn, call_id = params[1:]
103 for ms in modems:
104 if str(ms.msisdn) == ms_msisdn:
105 print('hanging up %s %r' % (ms.name(), call_id))
106 ms.call_hangup(call_id)
107
Pau Espin Pedrold27de2b2017-11-06 17:42:41 +0100108 elif cmd.startswith('ussd'):
109 if len(params) != 2:
110 print('wrong format')
111 continue
112 ussd_cmd = params[1]
113 for ms in modems:
114 print('modem %s: ussd %s' % (ms.name(), ussd_cmd))
115 response = ms.ussd_send(ussd_cmd)
116 print('modem %s: response=%r' % (ms.name(), response))
117
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +0200118 else:
119 print('Unknown command: %s' % cmd)