aboutsummaryrefslogtreecommitdiffstats
path: root/suites
diff options
context:
space:
mode:
Diffstat (limited to 'suites')
-rwxr-xr-xsuites/aoip_smpp/esme_ms_sms_storeforward.py60
-rwxr-xr-xsuites/aoip_smpp/esme_ms_sms_transaction.py (renamed from suites/aoip_smpp/esme_ms_sms.py)16
-rwxr-xr-xsuites/smpp/esme_ms_sms_storeforward.py52
-rwxr-xr-xsuites/smpp/esme_ms_sms_transaction.py (renamed from suites/smpp/esme_ms_sms.py)17
4 files changed, 128 insertions, 17 deletions
diff --git a/suites/aoip_smpp/esme_ms_sms_storeforward.py b/suites/aoip_smpp/esme_ms_sms_storeforward.py
new file mode 100755
index 0000000..3e7e4f8
--- /dev/null
+++ b/suites/aoip_smpp/esme_ms_sms_storeforward.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+
+# This test checks following use-cases:
+# * SMPP interface of SMSC accepts SMPP clients (ESMEs) with password previously
+# defined in its configuration file.
+# * When SMS is sent in 'store & forward' mode, ESME fails to send an SMS to non registered MS.
+# * When SMS is sent in 'store & forward' mode, ESME can send an SMS to a not yet registered MS.
+# * When SMS is sent in 'store & forward' mode, ESME can send an SMS to an already registered MS.
+# * When SMS is sent in 'store & forward' mode, ESME receives a SMS receipt if it asked for it.
+
+from osmo_gsm_tester.test import *
+
+SMPP_ESME_RINVDSTADR = 0x0000000B
+
+hlr = suite.hlr()
+bts = suite.bts()
+mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr())
+msc = suite.msc(hlr, mgcpgw)
+bsc = suite.bsc(msc)
+stp = suite.stp()
+bsc.bts_add(bts)
+
+ms = suite.modem()
+esme = suite.esme()
+msc.smsc.esme_add(esme)
+
+hlr.start()
+stp.start()
+msc.start()
+mgcpgw.start()
+bsc.start()
+bts.start()
+
+esme.connect()
+hlr.subscriber_add(ms)
+
+wrong_msisdn = ms.msisdn + esme.msisdn
+print('sending sms with wrong msisdn %s, it will fail' % wrong_msisdn)
+msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
+esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_STOREFORWARD)
+
+print('sending sms, it will be stored...')
+msg = Sms(esme.msisdn, ms.msisdn, 'smpp send not-yet-registered message')
+umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
+
+print('MS registers and will receive the SMS...')
+ms.connect(msc.mcc_mnc())
+wait(ms.is_connected, msc.mcc_mnc())
+wait(msc.subscriber_attached, ms)
+wait(ms.sms_was_received, msg)
+print('Waiting to receive and consume sms receipt with reference', umref)
+wait(esme.receipt_was_received, umref)
+
+print('checking MS can receive SMS while registered...')
+msg = Sms(esme.msisdn, ms.msisdn, 'smpp send already-registered message')
+umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
+wait(ms.sms_was_received, msg)
+print('Waiting to receive and consume sms receipt with reference', umref)
+wait(esme.receipt_was_received, umref)
+esme.disconnect()
diff --git a/suites/aoip_smpp/esme_ms_sms.py b/suites/aoip_smpp/esme_ms_sms_transaction.py
index 7f9ef18..8bcfb6b 100755
--- a/suites/aoip_smpp/esme_ms_sms.py
+++ b/suites/aoip_smpp/esme_ms_sms_transaction.py
@@ -3,7 +3,8 @@
# This test checks following use-cases:
# * SMPP interface of SMSC accepts SMPP clients (ESMEs) with password previously
# defined in its configuration file.
-# * ESME can send an SMS to an already registered MS when SMSC is in 'forward' mode.
+# * When SMS is sent in 'transaction' mode, ESME can send an SMS to an already registered MS.
+# * When SMS is sent in 'transaction' mode, ESME fails to send an SMS to non registered MS.
from osmo_gsm_tester.test import *
@@ -39,18 +40,17 @@ wait(msc.subscriber_attached, ms)
print('sending first sms...')
msg = Sms(esme.msisdn, ms.msisdn, 'smpp send message')
-esme.sms_send(msg)
+esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
wait(ms.sms_was_received, msg)
print('sending second sms (unicode chars not in gsm aplhabet)...')
msg = Sms(esme.msisdn, ms.msisdn, 'chars:[кизаçйж]')
-esme.sms_send(msg)
+esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
wait(ms.sms_was_received, msg)
-# FIXME: This test is not failing with error but succeeds, need to check why: (forward vs store policy?)
-# wrong_msisdn = ms.msisdn + esme.msisdn
-# print('sending third sms (with wrong msisdn %s)' % wrong_msisdn)
-# msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
-# esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send, msg)
+wrong_msisdn = ms.msisdn + esme.msisdn
+print('sending third sms (with wrong msisdn %s)' % wrong_msisdn)
+msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
+esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_TRANSACTION)
esme.disconnect()
diff --git a/suites/smpp/esme_ms_sms_storeforward.py b/suites/smpp/esme_ms_sms_storeforward.py
new file mode 100755
index 0000000..5ff6ad3
--- /dev/null
+++ b/suites/smpp/esme_ms_sms_storeforward.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python3
+
+# This test checks following use-cases:
+# * SMPP interface of SMSC accepts SMPP clients (ESMEs) with password previously
+# defined in its configuration file.
+# * When SMS is sent in 'store & forward' mode, ESME fails to send an SMS to non registered MS.
+# * When SMS is sent in 'store & forward' mode, ESME can send an SMS to a not yet registered MS.
+# * When SMS is sent in 'store & forward' mode, ESME can send an SMS to an already registered MS.
+# * When SMS is sent in 'store & forward' mode, ESME receives a SMS receipt if it asked for it.
+
+from osmo_gsm_tester.test import *
+
+SMPP_ESME_RINVDSTADR = 0x0000000B
+
+nitb = suite.nitb()
+bts = suite.bts()
+ms = suite.modem()
+esme = suite.esme()
+
+print('start nitb and bts...')
+nitb.bts_add(bts)
+nitb.smsc.esme_add(esme)
+nitb.start()
+bts.start()
+
+esme.connect()
+nitb.subscriber_add(ms)
+
+wrong_msisdn = ms.msisdn + esme.msisdn
+print('sending sms with wrong msisdn %s, it will fail' % wrong_msisdn)
+msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
+esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_STOREFORWARD)
+
+print('sending sms, it will be stored...')
+msg = Sms(esme.msisdn, ms.msisdn, 'smpp send not-yet-registered message')
+umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
+
+print('MS registers and will receive the SMS...')
+ms.connect(nitb.mcc_mnc())
+wait(ms.is_connected, nitb.mcc_mnc())
+wait(nitb.subscriber_attached, ms)
+wait(ms.sms_was_received, msg)
+print('Waiting to receive and consume sms receipt with reference', umref)
+wait(esme.receipt_was_received, umref)
+
+print('checking MS can receive SMS while registered...')
+msg = Sms(esme.msisdn, ms.msisdn, 'smpp send already-registered message')
+umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
+wait(ms.sms_was_received, msg)
+print('Waiting to receive and consume sms receipt with reference', umref)
+wait(esme.receipt_was_received, umref)
+esme.disconnect()
diff --git a/suites/smpp/esme_ms_sms.py b/suites/smpp/esme_ms_sms_transaction.py
index bc9d7d4..a147754 100755
--- a/suites/smpp/esme_ms_sms.py
+++ b/suites/smpp/esme_ms_sms_transaction.py
@@ -3,7 +3,8 @@
# This test checks following use-cases:
# * SMPP interface of SMSC accepts SMPP clients (ESMEs) with password previously
# defined in its configuration file.
-# * ESME can send an SMS to an already registered MS when SMSC is in 'forward' mode.
+# * When SMS is sent in 'transaction' mode, ESME can send an SMS to an already registered MS.
+# * When SMS is sent in 'transaction' mode, ESME fails to send an SMS to non registered MS.
from osmo_gsm_tester.test import *
@@ -31,19 +32,17 @@ wait(nitb.subscriber_attached, ms)
print('sending first sms...')
msg = Sms(esme.msisdn, ms.msisdn, 'smpp send message')
-esme.sms_send(msg)
+esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
wait(ms.sms_was_received, msg)
print('sending second sms (unicode chars not in gsm aplhabet)...')
msg = Sms(esme.msisdn, ms.msisdn, 'chars:[кизаçйж]')
-esme.sms_send(msg)
+esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
wait(ms.sms_was_received, msg)
-
-# FIXME: This test is not failing with error but succeeds, need to check why: (forward vs store policy?)
-# wrong_msisdn = ms.msisdn + esme.msisdn
-# print('sending third sms (with wrong msisdn %s)' % wrong_msisdn)
-# msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
-# esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send, msg)
+wrong_msisdn = ms.msisdn + esme.msisdn
+print('sending third sms (with wrong msisdn %s)' % wrong_msisdn)
+msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
+esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_TRANSACTION)
esme.disconnect()