blob: 07293d20d93b58de4b229e8ca2abf2d5e94fc25c [file] [log] [blame]
Pau Espin Pedrole913e372017-08-24 17:21:51 +02001#!/usr/bin/env python3
Pau Espin Pedroldfe38ad2017-11-09 13:57:39 +01002from osmo_gsm_tester.testenv import *
Pau Espin Pedrole913e372017-08-24 17:21:51 +02003
4hlr = suite.hlr()
5bts = suite.bts()
6mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr())
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +01007mgw_bsc = suite.mgw()
Pau Espin Pedrole913e372017-08-24 17:21:51 +02008stp = suite.stp()
Pau Espin Pedrol1e1d3812017-11-16 18:06:37 +01009msc = suite.msc(hlr, mgcpgw, stp)
10bsc = suite.bsc(msc, mgw_bsc, stp)
Pau Espin Pedrole913e372017-08-24 17:21:51 +020011ms = suite.modem()
12
13print('start network...')
14msc.set_authentication(True)
Pau Espin Pedrolabd556a2017-09-04 16:26:08 +020015msc.set_encryption('a5_0')
16bsc.set_encryption('a5_0')
Pau Espin Pedrole913e372017-08-24 17:21:51 +020017hlr.start()
18stp.start()
19msc.start()
20mgcpgw.start()
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +010021mgw_bsc.start()
Pau Espin Pedrole913e372017-08-24 17:21:51 +020022bsc.bts_add(bts)
23bsc.start()
24bts.start()
25
26ms.log_info()
27good_ki = ms.ki()
28bad_ki = ("%1X" % (int(good_ki[0], 16) ^ 0x01)) + good_ki[1:]
29
30print('KI changed: ' + good_ki + " => " + bad_ki)
31ms.set_ki(bad_ki)
32hlr.subscriber_add(ms)
33print('Attempt connection with wrong KI...')
34ms.connect(msc.mcc_mnc())
35
Pau Espin Pedrol6680ef22017-09-11 01:24:05 +020036sleep(40) # TODO: read pcap or CTRL interface and look for Rejected? (gsm_a.dtap.msg_mm_type == 0x04)
Pau Espin Pedrole913e372017-08-24 17:21:51 +020037print('Asserting modem did not register')
38# FIXME: this can fail because ofono qmi signals registered before being accepted by network. See OS#2458
39# assert not ms.is_connected(msc.mcc_mnc())
40assert not msc.subscriber_attached(ms)
41
42hlr.subscriber_delete(ms)
43print('KI changed: ' + bad_ki + " => " + good_ki)
44ms.set_ki(good_ki)
45hlr.subscriber_add(ms, ms.msisdn)
46print('Attempt connection with correct KI...')
47ms.connect(msc.mcc_mnc())
48wait(ms.is_connected, msc.mcc_mnc())
49wait(msc.subscriber_attached, ms)