Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 1 | #!/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. |
Pau Espin Pedrol | db0d8ab | 2017-07-05 13:38:33 +0200 | [diff] [blame] | 6 | # * When SMS is sent in 'transaction' mode, ESME can send an SMS to an already registered MS. |
| 7 | # * When SMS is sent in 'transaction' mode, ESME fails to send an SMS to non registered MS. |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 8 | |
Pau Espin Pedrol | dfe38ad | 2017-11-09 13:57:39 +0100 | [diff] [blame] | 9 | from osmo_gsm_tester.testenv import * |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 10 | |
| 11 | SMPP_ESME_RINVDSTADR = 0x0000000B |
| 12 | |
| 13 | hlr = suite.hlr() |
| 14 | bts = suite.bts() |
| 15 | mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) |
Pau Espin Pedrol | 386b78d | 2017-11-09 13:02:09 +0100 | [diff] [blame] | 16 | mgw_bsc = suite.mgw() |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 17 | stp = suite.stp() |
Pau Espin Pedrol | 1e1d381 | 2017-11-16 18:06:37 +0100 | [diff] [blame] | 18 | msc = suite.msc(hlr, mgcpgw, stp) |
| 19 | bsc = suite.bsc(msc, mgw_bsc, stp) |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 20 | bsc.bts_add(bts) |
| 21 | |
| 22 | ms = suite.modem() |
| 23 | esme = suite.esme() |
| 24 | msc.smsc.esme_add(esme) |
| 25 | |
| 26 | hlr.start() |
| 27 | stp.start() |
| 28 | msc.start() |
| 29 | mgcpgw.start() |
Pau Espin Pedrol | 386b78d | 2017-11-09 13:02:09 +0100 | [diff] [blame] | 30 | mgw_bsc.start() |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 31 | bsc.start() |
| 32 | bts.start() |
| 33 | |
| 34 | esme.connect() |
| 35 | hlr.subscriber_add(ms) |
| 36 | ms.connect(msc.mcc_mnc()) |
| 37 | |
| 38 | ms.log_info() |
| 39 | print('waiting for modem to attach...') |
| 40 | wait(ms.is_connected, msc.mcc_mnc()) |
| 41 | wait(msc.subscriber_attached, ms) |
| 42 | |
| 43 | print('sending first sms...') |
| 44 | msg = Sms(esme.msisdn, ms.msisdn, 'smpp send message') |
Pau Espin Pedrol | db0d8ab | 2017-07-05 13:38:33 +0200 | [diff] [blame] | 45 | esme.sms_send(msg, esme.MSGMODE_TRANSACTION) |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 46 | wait(ms.sms_was_received, msg) |
| 47 | |
| 48 | print('sending second sms (unicode chars not in gsm aplhabet)...') |
| 49 | msg = Sms(esme.msisdn, ms.msisdn, 'chars:[кизаçйж]') |
Pau Espin Pedrol | db0d8ab | 2017-07-05 13:38:33 +0200 | [diff] [blame] | 50 | esme.sms_send(msg, esme.MSGMODE_TRANSACTION) |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 51 | wait(ms.sms_was_received, msg) |
| 52 | |
Pau Espin Pedrol | db0d8ab | 2017-07-05 13:38:33 +0200 | [diff] [blame] | 53 | wrong_msisdn = ms.msisdn + esme.msisdn |
| 54 | print('sending third sms (with wrong msisdn %s)' % wrong_msisdn) |
| 55 | msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest') |
| 56 | esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_TRANSACTION) |
Pau Espin Pedrol | 2d16f6f | 2017-05-30 15:33:57 +0200 | [diff] [blame] | 57 | |
| 58 | esme.disconnect() |