blob: e7aa76c1e26f5da0946a1424392b3e8281a83eb5 [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()
Pau Espin Pedrol86ea02f2018-02-26 12:14:46 +01006mgw_msc = suite.mgw()
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 Pedrol86ea02f2018-02-26 12:14:46 +01009msc = suite.msc(hlr, mgw_msc, stp)
Pau Espin Pedrol1e1d3812017-11-16 18:06:37 +010010bsc = 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_1')
16bsc.set_encryption('a5_1')
Pau Espin Pedrole913e372017-08-24 17:21:51 +020017hlr.start()
18stp.start()
19msc.start()
Pau Espin Pedrol86ea02f2018-02-26 12:14:46 +010020mgw_msc.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()
Pau Espin Pedrol1e191512017-12-11 15:12:55 +010025wait(bsc.bts_is_connected, bts)
Pau Espin Pedrole913e372017-08-24 17:21:51 +020026
27ms.log_info()
28good_ki = ms.ki()
29bad_ki = ("%1X" % (int(good_ki[0], 16) ^ 0x01)) + good_ki[1:]
30
31print('KI changed: ' + good_ki + " => " + bad_ki)
32ms.set_ki(bad_ki)
33hlr.subscriber_add(ms)
34print('Attempt connection with wrong KI...')
35ms.connect(msc.mcc_mnc())
36
Pau Espin Pedrol6680ef22017-09-11 01:24:05 +020037sleep(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 +020038print('Asserting modem did not register')
39# FIXME: this can fail because ofono qmi signals registered before being accepted by network. See OS#2458
40# assert not ms.is_connected(msc.mcc_mnc())
41assert not msc.subscriber_attached(ms)
42
43hlr.subscriber_delete(ms)
44print('KI changed: ' + bad_ki + " => " + good_ki)
45ms.set_ki(good_ki)
46hlr.subscriber_add(ms, ms.msisdn)
47print('Attempt connection with correct KI...')
48ms.connect(msc.mcc_mnc())
49wait(ms.is_connected, msc.mcc_mnc())
50wait(msc.subscriber_attached, ms)