blob: 681bc294e989c2fe07df17ffc1fce53df2aca1b4 [file] [log] [blame]
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +02001#!/usr/bin/env python3
2
3# This test checks following use-cases:
4# * SMPP interface of SMSC accepts SMPP clients (ESMEs) with password previously
5# defined in its configuration file.
6# * When SMS is sent in 'store & forward' mode, ESME fails to send an SMS to non registered MS.
7# * When SMS is sent in 'store & forward' mode, ESME can send an SMS to a not yet registered MS.
8# * When SMS is sent in 'store & forward' mode, ESME can send an SMS to an already registered MS.
9# * When SMS is sent in 'store & forward' mode, ESME receives a SMS receipt if it asked for it.
10
Pau Espin Pedroldfe38ad2017-11-09 13:57:39 +010011from osmo_gsm_tester.testenv import *
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020012
13SMPP_ESME_RINVDSTADR = 0x0000000B
14
15hlr = suite.hlr()
16bts = suite.bts()
Pau Espin Pedrol86ea02f2018-02-26 12:14:46 +010017mgw_msc = suite.mgw()
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +010018mgw_bsc = suite.mgw()
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020019stp = suite.stp()
Pau Espin Pedrol86ea02f2018-02-26 12:14:46 +010020msc = suite.msc(hlr, mgw_msc, stp)
Pau Espin Pedrol1e1d3812017-11-16 18:06:37 +010021bsc = suite.bsc(msc, mgw_bsc, stp)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020022bsc.bts_add(bts)
23
24ms = suite.modem()
25esme = suite.esme()
26msc.smsc.esme_add(esme)
27
28hlr.start()
29stp.start()
30msc.start()
Pau Espin Pedrol86ea02f2018-02-26 12:14:46 +010031mgw_msc.start()
Pau Espin Pedrol386b78d2017-11-09 13:02:09 +010032mgw_bsc.start()
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020033bsc.start()
34bts.start()
Pau Espin Pedrol1e191512017-12-11 15:12:55 +010035wait(bsc.bts_is_connected, bts)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020036
37esme.connect()
38hlr.subscriber_add(ms)
39
40wrong_msisdn = ms.msisdn + esme.msisdn
Pau Espin Pedrol668d42f2018-01-30 12:31:37 +010041print('sending sms with wrong msisdn %s, it will be stored but not delivered' % wrong_msisdn)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020042msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
Pau Espin Pedrol668d42f2018-01-30 12:31:37 +010043# Since osmo-msc 1e67fea7ba5c6336, we accept all sms in store&forward mode without looking at HLR
44# esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_STOREFORWARD)
45umref_wrong = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020046
Pau Espin Pedrol031f4642018-01-29 10:53:17 +010047print('sending sms, it will be stored...')
48msg = Sms(esme.msisdn, ms.msisdn, 'smpp send not-yet-registered message')
49umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020050
51print('MS registers and will receive the SMS...')
52ms.connect(msc.mcc_mnc())
53wait(ms.is_connected, msc.mcc_mnc())
54wait(msc.subscriber_attached, ms)
Pau Espin Pedrol031f4642018-01-29 10:53:17 +010055wait(ms.sms_was_received, msg)
56print('Waiting to receive and consume sms receipt with reference', umref)
57wait(esme.receipt_was_received, umref)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020058
59print('checking MS can receive SMS while registered...')
60msg = Sms(esme.msisdn, ms.msisdn, 'smpp send already-registered message')
61umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
62wait(ms.sms_was_received, msg)
63print('Waiting to receive and consume sms receipt with reference', umref)
64wait(esme.receipt_was_received, umref)
Pau Espin Pedrol668d42f2018-01-30 12:31:37 +010065
66print('Asserting the sms with wrong msisdn was not delivered', umref_wrong)
67assert not esme.receipt_was_received(umref_wrong)
68
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020069esme.disconnect()