[PATCH] osmo-gsm-tester[master]: esme: run_method_expect_failure: Check failure in server res...

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Wed Jul 5 11:40:36 UTC 2017


Review at  https://gerrit.osmocom.org/3129

esme: run_method_expect_failure: Check failure in server response

We can now enable the esme_ms_sms test part which asserts that sending
an SMS to an msisdn with unknown destination triggers an error.

Change-Id: Ia2c0c325fee14143deca8310312fc530cd9ce92e
---
M src/osmo_gsm_tester/esme.py
M suites/smpp/esme_ms_sms.py
2 files changed, 17 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/29/3129/1

diff --git a/src/osmo_gsm_tester/esme.py b/src/osmo_gsm_tester/esme.py
index f92863d..5d3bf37 100644
--- a/src/osmo_gsm_tester/esme.py
+++ b/src/osmo_gsm_tester/esme.py
@@ -108,14 +108,26 @@
             self.client.disconnect()
             self.connected = False
 
-    def run_method_expect_failure(self, errcode, method, *args):
+    # Used in 'run_method_expect_failure', defined here because lambda functions cannot contain assigments:
+    def trigger_message_sent(self):
+        self.message_sent = True
+
+    def run_method_expect_failure(self, errcode, method, *args, check_smsc_resp=False):
+        old_func = self.client.message_sent_handler
         try:
             method(*args)
+            if check_smsc_resp: # failure is contained in SMS response to our query, wait for it
+                self.message_sent = False
+                self.client.set_message_sent_handler(self.trigger_message_sent)
+                event_loop.wait(self, lambda: self.message_sent == True, timeout=10)
             #it should not succeed, raise an exception:
             raise log.Error('SMPP Failure: %s should have failed with SMPP error %d (%s) but succeeded.' % (method, errcode, smpplib.consts.DESCRIPTIONS[errcode]))
         except smpplib.exceptions.PDUError as e:
             if e.args[1] != errcode:
                 raise e
+            self.dbg('Expected failure triggered: %d' % errcode)
+        finally:
+            self.client.set_message_sent_handler(old_func)
 
     def sms_send(self, sms_obj):
         parts, encoding_flag, msg_type_flag = smpplib.gsm.make_parts(str(sms_obj))
diff --git a/suites/smpp/esme_ms_sms.py b/suites/smpp/esme_ms_sms.py
index bc9d7d4..b6e7868 100755
--- a/suites/smpp/esme_ms_sms.py
+++ b/suites/smpp/esme_ms_sms.py
@@ -41,9 +41,9 @@
 
 
 # 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, msg, check_smsc_resp=True)
 
 esme.disconnect()

-- 
To view, visit https://gerrit.osmocom.org/3129
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia2c0c325fee14143deca8310312fc530cd9ce92e
Gerrit-PatchSet: 1
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>



More information about the gerrit-log mailing list