blob: f4d379c9319e305619ce251c70a3de9f83e876fa [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
Pau Espin Pedrol40c7bc72020-05-05 13:41:42 +020015nitb = tenv.nitb()
16bts = tenv.bts()
17ms = tenv.modem()
18esme = tenv.esme()
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020019
Pau Espin Pedrol43857802018-09-13 15:07:27 +020020print('start nitb and bts...')
21nitb.bts_add(bts)
22nitb.smsc.esme_add(esme)
23nitb.start()
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020024bts.start()
Pau Espin Pedrol43857802018-09-13 15:07:27 +020025wait(nitb.bts_is_connected, bts)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020026
27esme.connect()
Pau Espin Pedrol43857802018-09-13 15:07:27 +020028nitb.subscriber_add(ms)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020029
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020030wrong_msisdn = ms.msisdn() + esme.msisdn
Pau Espin Pedrol43857802018-09-13 15:07:27 +020031print('sending sms with wrong msisdn %s, it will fail' % wrong_msisdn)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020032msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
Pau Espin Pedrol43857802018-09-13 15:07:27 +020033esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_STOREFORWARD)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020034
Pau Espin Pedrol031f4642018-01-29 10:53:17 +010035print('sending sms, it will be stored...')
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020036msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send not-yet-registered message')
Pau Espin Pedrol031f4642018-01-29 10:53:17 +010037umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020038
39print('MS registers and will receive the SMS...')
Pau Espin Pedrol43857802018-09-13 15:07:27 +020040ms.connect(nitb.mcc_mnc())
Pau Espin Pedrol3a81a7e2020-06-10 16:52:53 +020041wait(ms.is_registered, nitb.mcc_mnc())
Pau Espin Pedrol43857802018-09-13 15:07:27 +020042wait(nitb.subscriber_attached, ms)
Pau Espin Pedrol031f4642018-01-29 10:53:17 +010043wait(ms.sms_was_received, msg)
44print('Waiting to receive and consume sms receipt with reference', umref)
45wait(esme.receipt_was_received, umref)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020046
47print('checking MS can receive SMS while registered...')
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020048msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send already-registered message')
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020049umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
50wait(ms.sms_was_received, msg)
51print('Waiting to receive and consume sms receipt with reference', umref)
52wait(esme.receipt_was_received, umref)
Pau Espin Pedroldb0d8ab2017-07-05 13:38:33 +020053esme.disconnect()