<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18199">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">esme: fix smpplib imports<br><br>smpplib modules are used in several places, so it's not enough to import<br>them in the constructor since they are only imported for the function<br>scope.<br><br>Change-Id: I6511e28c7ef6aa86e85a7e03aa10a67d87896588<br>---<br>M src/osmo_gsm_tester/obj/esme.py<br>1 file changed, 33 insertions(+), 18 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/99/18199/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/obj/esme.py b/src/osmo_gsm_tester/obj/esme.py</span><br><span>index e23e88c..13e1bba 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/esme.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/esme.py</span><br><span>@@ -27,6 +27,25 @@</span><br><span> MAX_SYS_ID_LEN = 16</span><br><span> MAX_PASSWD_LEN = 16</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+smpplib_gsm = None</span><br><span style="color: hsl(120, 100%, 40%);">+smpplib_client = None</span><br><span style="color: hsl(120, 100%, 40%);">+smpplib_command = None</span><br><span style="color: hsl(120, 100%, 40%);">+smpplib_consts = None</span><br><span style="color: hsl(120, 100%, 40%);">+smpplib_exceptions = None</span><br><span style="color: hsl(120, 100%, 40%);">+def _import_smpplib_modules():</span><br><span style="color: hsl(120, 100%, 40%);">+    global smpplib_gsm, smpplib_client, smpplib_command, smpplib_consts, smpplib_exceptions</span><br><span style="color: hsl(120, 100%, 40%);">+    if smpplib_exceptions is None:</span><br><span style="color: hsl(120, 100%, 40%);">+        import smpplib.gsm</span><br><span style="color: hsl(120, 100%, 40%);">+        import smpplib.client</span><br><span style="color: hsl(120, 100%, 40%);">+        import smpplib.command</span><br><span style="color: hsl(120, 100%, 40%);">+        import smpplib.consts</span><br><span style="color: hsl(120, 100%, 40%);">+        import smpplib.exceptions</span><br><span style="color: hsl(120, 100%, 40%);">+        smpplib_gsm = smpplib.gsm</span><br><span style="color: hsl(120, 100%, 40%);">+        smpplib_client = smpplib.client</span><br><span style="color: hsl(120, 100%, 40%);">+        smpplib_command = smpplib.command</span><br><span style="color: hsl(120, 100%, 40%);">+        smpplib_consts = smpplib.consts</span><br><span style="color: hsl(120, 100%, 40%);">+        smpplib_exceptions = smpplib.exceptions</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> class Esme(log.Origin):</span><br><span> </span><br><span>     def __init__(self, msisdn):</span><br><span>@@ -42,13 +61,9 @@</span><br><span>         self.listening = False</span><br><span>         self.references_pending_receipt = []</span><br><span>         self.next_user_message_reference = 1</span><br><span style="color: hsl(0, 100%, 40%);">-        import smpplib.gsm</span><br><span style="color: hsl(0, 100%, 40%);">-        import smpplib.client</span><br><span style="color: hsl(0, 100%, 40%);">-        import smpplib.command</span><br><span style="color: hsl(0, 100%, 40%);">-        import smpplib.consts</span><br><span style="color: hsl(0, 100%, 40%);">-        import smpplib.exceptions</span><br><span style="color: hsl(0, 100%, 40%);">-        self.MSGMODE_TRANSACTION = smpplib.consts.SMPP_MSGMODE_FORWARD</span><br><span style="color: hsl(0, 100%, 40%);">-        self.MSGMODE_STOREFORWARD = smpplib.consts.SMPP_MSGMODE_STOREFORWARD</span><br><span style="color: hsl(120, 100%, 40%);">+        _import_smpplib_modules()</span><br><span style="color: hsl(120, 100%, 40%);">+        self.MSGMODE_TRANSACTION = smpplib_consts.SMPP_MSGMODE_FORWARD</span><br><span style="color: hsl(120, 100%, 40%);">+        self.MSGMODE_STOREFORWARD = smpplib_consts.SMPP_MSGMODE_STOREFORWARD</span><br><span> </span><br><span>     def __del__(self):</span><br><span>         self.cleanup()</span><br><span>@@ -56,7 +71,7 @@</span><br><span>     def cleanup(self):</span><br><span>         try:</span><br><span>             self.disconnect()</span><br><span style="color: hsl(0, 100%, 40%);">-        except smpplib.exceptions.ConnectionError:</span><br><span style="color: hsl(120, 100%, 40%);">+        except smpplib_exceptions.ConnectionError:</span><br><span>             pass</span><br><span> </span><br><span>     def set_smsc(self, smsc):</span><br><span>@@ -95,7 +110,7 @@</span><br><span>         host, port = self.smsc.addr_port</span><br><span>         if self.client:</span><br><span>             self.disconnect()</span><br><span style="color: hsl(0, 100%, 40%);">-        self.client = smpplib.client.Client(host, port, timeout=None)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.client = smpplib_client.Client(host, port, timeout=None)</span><br><span>         self.client.set_message_sent_handler(</span><br><span>             lambda pdu: self.dbg('Unhandled submit_sm_resp message:', pdu.sequence) )</span><br><span>         self.client.set_message_received_handler(self._message_received_handler)</span><br><span>@@ -117,9 +132,9 @@</span><br><span> </span><br><span>     def _message_received_handler(self, pdu, *args):</span><br><span>         self.dbg('message received:', seq=pdu.sequence)</span><br><span style="color: hsl(0, 100%, 40%);">-        if isinstance(pdu, smpplib.command.AlertNotification):</span><br><span style="color: hsl(120, 100%, 40%);">+        if isinstance(pdu, smpplib_command.AlertNotification):</span><br><span>             self.dbg('message received:  AlertNotification:', ms_availability_status=pdu.ms_availability_status)</span><br><span style="color: hsl(0, 100%, 40%);">-        elif isinstance(pdu, smpplib.command.DeliverSM):</span><br><span style="color: hsl(120, 100%, 40%);">+        elif isinstance(pdu, smpplib_command.DeliverSM):</span><br><span>             umref = int(pdu.user_message_reference)</span><br><span>             self.dbg('message received: DeliverSM', references_pending_receipt=self.references_pending_receipt, user_message_reference=umref)</span><br><span>             self.references_pending_receipt.remove(umref)</span><br><span>@@ -131,25 +146,25 @@</span><br><span>         try:</span><br><span>             method(*args)</span><br><span>             #it should not succeed, raise an exception:</span><br><span style="color: hsl(0, 100%, 40%);">-            raise log.Error('SMPP Failure: %s should have failed with SMPP error %d (%s) but succeeded.' % (method, errcode, smpplib.consts.DESCRIPTIONS[errcode]))</span><br><span style="color: hsl(0, 100%, 40%);">-        except smpplib.exceptions.PDUError as e:</span><br><span style="color: hsl(120, 100%, 40%);">+            raise log.Error('SMPP Failure: %s should have failed with SMPP error %d (%s) but succeeded.' % (method, errcode, smpplib_consts.DESCRIPTIONS[errcode]))</span><br><span style="color: hsl(120, 100%, 40%);">+        except smpplib_exceptions.PDUError as e:</span><br><span>             if e.args[1] != errcode:</span><br><span>                 raise e</span><br><span>             self.dbg('Expected failure triggered: %d' % errcode)</span><br><span> </span><br><span>     def sms_send(self, sms_obj, mode, receipt=False):</span><br><span style="color: hsl(0, 100%, 40%);">-        parts, encoding_flag, msg_type_flag = smpplib.gsm.make_parts(str(sms_obj))</span><br><span style="color: hsl(120, 100%, 40%);">+        parts, encoding_flag, msg_type_flag = smpplib_gsm.make_parts(str(sms_obj))</span><br><span>         seqs = []</span><br><span>         self.log('Sending SMS "%s" to %s' % (str(sms_obj), sms_obj.dst_msisdn()))</span><br><span>         umref = self.next_user_message_reference</span><br><span>         self.next_user_message_reference = (self.next_user_message_reference + 1) % (1 << 8)</span><br><span>         for part in parts:</span><br><span>             pdu = self.client.send_message(</span><br><span style="color: hsl(0, 100%, 40%);">-                source_addr_ton=smpplib.consts.SMPP_TON_INTL,</span><br><span style="color: hsl(0, 100%, 40%);">-                source_addr_npi=smpplib.consts.SMPP_NPI_ISDN,</span><br><span style="color: hsl(120, 100%, 40%);">+                source_addr_ton=smpplib_consts.SMPP_TON_INTL,</span><br><span style="color: hsl(120, 100%, 40%);">+                source_addr_npi=smpplib_consts.SMPP_NPI_ISDN,</span><br><span>                 source_addr=sms_obj.src_msisdn(),</span><br><span style="color: hsl(0, 100%, 40%);">-                dest_addr_ton=smpplib.consts.SMPP_TON_INTL,</span><br><span style="color: hsl(0, 100%, 40%);">-                dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN,</span><br><span style="color: hsl(120, 100%, 40%);">+                dest_addr_ton=smpplib_consts.SMPP_TON_INTL,</span><br><span style="color: hsl(120, 100%, 40%);">+                dest_addr_npi=smpplib_consts.SMPP_NPI_ISDN,</span><br><span>                 destination_addr=sms_obj.dst_msisdn(),</span><br><span>                 short_message=part,</span><br><span>                 data_coding=encoding_flag,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18199">change 18199</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18199"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I6511e28c7ef6aa86e85a7e03aa10a67d87896588 </div>
<div style="display:none"> Gerrit-Change-Number: 18199 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>