Pau Espin Pedrol has submitted this change and it was merged.

Change subject: Drop event_loop global functions and import MainLoop
......................................................................


Drop event_loop global functions and import MainLoop

Take the chance to identify and drop modules importing event_loop but
not using it.

Change-Id: Ifa1940cd00138ebc72fbcfd45a0e28246f7a5ed9
---
M src/osmo_gsm_tester/bts.py
M src/osmo_gsm_tester/bts_nanobts.py
M src/osmo_gsm_tester/bts_octphy.py
M src/osmo_gsm_tester/bts_osmo.py
M src/osmo_gsm_tester/bts_osmotrx.py
M src/osmo_gsm_tester/esme.py
M src/osmo_gsm_tester/event_loop.py
M src/osmo_gsm_tester/modem.py
M src/osmo_gsm_tester/pcu_osmo.py
M src/osmo_gsm_tester/pcu_sysmo.py
M src/osmo_gsm_tester/powersupply.py
M src/osmo_gsm_tester/powersupply_sispm.py
M src/osmo_gsm_tester/process.py
M src/osmo_gsm_tester/suite.py
M src/osmo_gsm_tester/test.py
15 files changed, 53 insertions(+), 72 deletions(-)

Approvals:
  Pau Espin Pedrol: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo_gsm_tester/bts.py b/src/osmo_gsm_tester/bts.py
index 289b697..02e5df7 100644
--- a/src/osmo_gsm_tester/bts.py
+++ b/src/osmo_gsm_tester/bts.py
@@ -21,7 +21,7 @@
 import pprint
 import tempfile
 from abc import ABCMeta, abstractmethod
-from . import log, config, util, template, process, event_loop, pcu_osmo
+from . import log, config, util, template, process, pcu_osmo
 
 class Bts(log.Origin, metaclass=ABCMeta):
     suite_run = None
diff --git a/src/osmo_gsm_tester/bts_nanobts.py 
b/src/osmo_gsm_tester/bts_nanobts.py
index 1d4a14a..9599022 100644
--- a/src/osmo_gsm_tester/bts_nanobts.py
+++ b/src/osmo_gsm_tester/bts_nanobts.py
@@ -22,8 +22,9 @@
 import tempfile
 import re
 from abc import ABCMeta, abstractmethod
-from . import log, config, util, template, process, event_loop, pcap_recorder, 
bts, pcu
+from . import log, config, util, template, process, pcap_recorder, bts, pcu
 from . import powersupply
+from .event_loop import MainLoop
 
 class NanoBts(bts.Bts):
 
@@ -130,7 +131,7 @@
         # Let some time for BTS to restart. It takes much more than 20 secs, 
and
         # this way we make sure we don't catch responses in abisip-find prior 
to
         # BTS restarting.
-        event_loop.sleep(self, 20)
+        MainLoop.sleep(self, 20)
 
         self.log('Starting to connect to', self.bsc)
         ipfind = AbisIpFind(self.suite_run, self.run_dir, local_bind_ip, 
'postconf')
@@ -139,7 +140,7 @@
         self.log('nanoBTS configured and running')
         ipfind.stop()
 
-        event_loop.wait(self, self.bsc.bts_is_connected, self, timeout=600)
+        MainLoop.wait(self, self.bsc.bts_is_connected, self, timeout=600)
         self.log('nanoBTS connected to BSC')
 
         #According to roh, it can be configured to use a static IP in a 
permanent way:
@@ -227,7 +228,7 @@
         return self.get_line_by_ip(ipaddr) is not None
 
     def wait_bts_ready(self, ipaddr):
-        event_loop.wait(self, self.bts_ready, ipaddr)
+        MainLoop.wait(self, self.bts_ready, ipaddr)
 
 
 class IpAccessConfig(log.Origin):
@@ -265,7 +266,7 @@
         self.env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
         self.proc = self.launch_process(IpAccessConfig.BIN_IPACCESS_CONFIG, 
*args)
         try:
-            event_loop.wait(self, self.proc.terminated)
+            MainLoop.wait(self, self.proc.terminated)
         except Exception as e:
             self.proc.terminate()
             raise e
diff --git a/src/osmo_gsm_tester/bts_octphy.py 
b/src/osmo_gsm_tester/bts_octphy.py
index f5fa90b..f48afcc 100644
--- a/src/osmo_gsm_tester/bts_octphy.py
+++ b/src/osmo_gsm_tester/bts_octphy.py
@@ -20,7 +20,7 @@
 import os
 import pprint
 import tempfile
-from . import log, config, util, template, process, event_loop, pcu_osmo, 
bts_osmo
+from . import log, config, util, template, process, pcu_osmo, bts_osmo
 
 class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit):
 
diff --git a/src/osmo_gsm_tester/bts_osmo.py b/src/osmo_gsm_tester/bts_osmo.py
index 60b9695..be87b9d 100644
--- a/src/osmo_gsm_tester/bts_osmo.py
+++ b/src/osmo_gsm_tester/bts_osmo.py
@@ -21,7 +21,7 @@
 import pprint
 import tempfile
 from abc import ABCMeta, abstractmethod
-from . import log, config, util, template, process, event_loop, bts, pcu_osmo
+from . import log, config, util, template, process, bts, pcu_osmo
 
 class OsmoBts(bts.Bts, metaclass=ABCMeta):
     proc_bts = None
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py 
b/src/osmo_gsm_tester/bts_osmotrx.py
index ba7258e..bdfb97c 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -20,7 +20,8 @@
 import os
 import pprint
 import tempfile
-from . import log, config, util, template, process, event_loop, pcu_osmo, 
bts_osmo
+from . import log, config, util, template, process, pcu_osmo, bts_osmo
+from .event_loop import MainLoop
 
 class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit):
 ##############
@@ -125,7 +126,7 @@
             self.trx = OsmoTrx(self.suite_run, self.conf, 
self.trx_remote_ip(), self.remote_addr())
             self.trx.start()
             self.log('Waiting for osmo-trx to start up...')
-            event_loop.wait(self, self.trx.trx_ready)
+            MainLoop.wait(self, self.trx.trx_ready)
 
         self.inst = 
util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts')))
         lib = self.inst.child('lib')
diff --git a/src/osmo_gsm_tester/esme.py b/src/osmo_gsm_tester/esme.py
index 63a1ded..78421f6 100644
--- a/src/osmo_gsm_tester/esme.py
+++ b/src/osmo_gsm_tester/esme.py
@@ -23,7 +23,8 @@
 import smpplib.consts
 import smpplib.exceptions
 
-from . import log, util, event_loop, sms
+from . import log, util, sms
+from .event_loop import MainLoop
 
 # if you want to know what's happening inside python-smpplib
 #import logging
@@ -82,14 +83,14 @@
 
     def start_listening(self):
         self.listening = True
-        event_loop.register_poll_func(self.poll)
+        MainLoop.register_poll_func(self.poll)
 
     def stop_listening(self):
         if not self.listening:
             return
         self.listening = False
         # Empty the queue before processing the unbind + disconnect PDUs
-        event_loop.unregister_poll_func(self.poll)
+        MainLoop.unregister_poll_func(self.poll)
         self.poll()
 
     def connect(self):
@@ -176,7 +177,7 @@
             umref, self.pdus_pending = self.sms_send(sms_obj, mode, receipt)
             self.dbg('pdus_pending:', self.pdus_pending)
             self.client.set_message_sent_handler(self._process_pdus_pending)
-            event_loop.wait(self, lambda: len(self.pdus_pending) == 0, 
timeout=10)
+            MainLoop.wait(self, lambda: len(self.pdus_pending) == 0, 
timeout=10)
             return umref
         finally:
             self.client.set_message_sent_handler(old_func)
diff --git a/src/osmo_gsm_tester/event_loop.py 
b/src/osmo_gsm_tester/event_loop.py
index 068eca9..a9683dd 100644
--- a/src/osmo_gsm_tester/event_loop.py
+++ b/src/osmo_gsm_tester/event_loop.py
@@ -112,35 +112,7 @@
         self.wait_no_raise(log_obj, lambda: False, [], {}, timeout=seconds, 
timestep=seconds)
 
 
-evloop = EventLoop()
-
-def register_poll_func(func):
-    global evloop
-    evloop.register_poll_func(func)
-
-def unregister_poll_func(func):
-    global evloop
-    evloop.unregister_poll_func(func)
-
-def poll():
-    global evloop
-    evloop.poll()
-
-def wait_no_raise(log_obj, condition, condition_args, condition_kwargs, 
timeout, timestep):
-    global evloop
-    evloop.wait_no_raise(log_obj, condition, condition_args, condition_kwargs, 
timeout, timestep)
-
-def wait(log_obj, condition, *condition_args, timeout=300, timestep=1, 
**condition_kwargs):
-    global evloop
-    evloop.wait(log_obj, condition, *condition_args, timeout=timeout, 
timestep=timestep, **condition_kwargs)
-
-def sleep(log_obj, seconds):
-    global evloop
-    evloop.sleep(log_obj, seconds)
-
-def defer(handler, *args, **kwargs):
-    global evloop
-    evloop.defer(handler, *args, **kwargs)
+MainLoop = EventLoop()
 
 
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py
index 8d41935..2f742ea 100644
--- a/src/osmo_gsm_tester/modem.py
+++ b/src/osmo_gsm_tester/modem.py
@@ -17,7 +17,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from . import log, util, event_loop, sms
+from . import log, util, sms
+from .event_loop import MainLoop
 
 from pydbus import SystemBus, Variant
 import time
@@ -54,7 +55,7 @@
         self.subscription_id = dbus_iface.connect(self.receive_signal)
 
     def receive_signal(self, *args, **kwargs):
-        event_loop.defer(self.handler, *args, **kwargs)
+        MainLoop.defer(self.handler, *args, **kwargs)
 
 def dbus_connect(dbus_iface, handler):
     '''This function shall be used instead of directly connecting DBus signals.
@@ -296,13 +297,13 @@
 
     def set_bool(self, name, bool_val, iface=I_MODEM):
         # to make sure any pending signals are received before we send out 
more DBus requests
-        event_loop.poll()
+        MainLoop.poll()
 
         val = bool(bool_val)
         self.log('Setting', name, val)
         self.interface(iface).SetProperty(name, Variant('b', val))
 
-        event_loop.wait(self, self.property_is, name, bool_val)
+        MainLoop.wait(self, self.property_is, name, bool_val)
 
     def set_powered(self, powered=True):
         self.set_bool('Powered', powered)
@@ -410,10 +411,10 @@
                 if not self.is_powered():
                         self.set_powered()
                 # wait for SimManager iface to appear after we power on
-                event_loop.wait(self, self.dbus.has_interface, I_SIMMGR, 
timeout=10)
+                MainLoop.wait(self, self.dbus.has_interface, I_SIMMGR, 
timeout=10)
                 simmgr = self.dbus.interface(I_SIMMGR)
                 # If properties are requested quickly, it may happen that Sim 
property is still not there.
-                event_loop.wait(self, lambda: 
simmgr.GetProperties().get('SubscriberIdentity', None) is not None, timeout=10)
+                MainLoop.wait(self, lambda: 
simmgr.GetProperties().get('SubscriberIdentity', None) is not None, timeout=10)
                 props = simmgr.GetProperties()
                 self.dbg('got SIM properties', props)
                 self._imsi = props.get('SubscriberIdentity', None)
@@ -473,8 +474,8 @@
         # waiting for that. Make it async and try to register when the scan is
         # finished.
         register_func = self.scan_cb_register_automatic if mcc_mnc is None 
else self.scan_cb_register
-        result_handler = lambda obj, result, user_data: 
event_loop.defer(register_func, result, user_data)
-        error_handler = lambda obj, e, user_data: 
event_loop.defer(self.scan_cb_error_handler, e, mcc_mnc)
+        result_handler = lambda obj, result, user_data: 
MainLoop.defer(register_func, result, user_data)
+        error_handler = lambda obj, e, user_data: 
MainLoop.defer(self.scan_cb_error_handler, e, mcc_mnc)
         dbus_async_call(netreg, netreg.Scan, timeout=30, 
cancellable=self.cancellable,
                         result_handler=result_handler, 
error_handler=error_handler,
                         user_data=mcc_mnc)
@@ -539,7 +540,7 @@
         self.cancellable.cancel()
         # Cancel op is applied as a signal coming from glib mainloop, so we
         # need to run it and wait for the callbacks to handle cancellations.
-        event_loop.poll()
+        MainLoop.poll()
         # once it has been triggered, create a new one for next operation:
         self.cancellable = Gio.Cancellable.new()
 
@@ -550,20 +551,20 @@
         self.set_powered(False)
         req_ifaces = self._required_ifaces()
         for iface in req_ifaces:
-            event_loop.wait(self, lambda: not self.dbus.has_interface(iface), 
timeout=10)
+            MainLoop.wait(self, lambda: not self.dbus.has_interface(iface), 
timeout=10)
 
     def power_cycle(self):
         'Power the modem and put it online, power cycle it if it was already 
on'
         req_ifaces = self._required_ifaces()
         if self.is_powered():
             self.dbg('Power cycling')
-            event_loop.sleep(self, 1.0) # workaround for ofono bug OS#3064
+            MainLoop.sleep(self, 1.0) # workaround for ofono bug OS#3064
             self.power_off()
         else:
             self.dbg('Powering on')
         self.set_powered()
         self.set_online()
-        event_loop.wait(self, self.dbus.has_interface, *req_ifaces, timeout=10)
+        MainLoop.wait(self, self.dbus.has_interface, *req_ifaces, timeout=10)
 
     def connect(self, mcc_mnc=None):
         'Connect to MCC+MNC'
@@ -616,7 +617,7 @@
 
         # Activate can only be called after we are attached
         ctx.SetProperty('Active', Variant('b', True))
-        event_loop.wait(self, lambda: ctx.GetProperties()['Active'] == True)
+        MainLoop.wait(self, lambda: ctx.GetProperties()['Active'] == True)
         self.log('context activated', path=ctx_path, apn=apn, user=user, 
properties=ctx.GetProperties())
         return ctx_path
 
@@ -624,7 +625,7 @@
         self.dbg('deactivate_context', path=ctx_id)
         ctx = systembus_get(ctx_id)
         ctx.SetProperty('Active', Variant('b', False))
-        event_loop.wait(self, lambda: ctx.GetProperties()['Active'] == False)
+        MainLoop.wait(self, lambda: ctx.GetProperties()['Active'] == False)
         self.dbg('deactivate_context active=false, removing', path=ctx_id)
         connmgr = self.dbus.interface(I_CONNMGR)
         connmgr.RemoveContext(ctx_id)
@@ -689,7 +690,7 @@
         else:
             caller_msisdn = str(caller_msisdn_or_modem)
         self.dbg('Waiting for incoming call from:', caller_msisdn)
-        event_loop.wait(self, lambda: 
self._find_call_msisdn_state(caller_msisdn, 'incoming') is not None, 
timeout=timeout)
+        MainLoop.wait(self, lambda: 
self._find_call_msisdn_state(caller_msisdn, 'incoming') is not None, 
timeout=timeout)
         return self._find_call_msisdn_state(caller_msisdn, 'incoming')
 
     def call_answer(self, call_id):
diff --git a/src/osmo_gsm_tester/pcu_osmo.py b/src/osmo_gsm_tester/pcu_osmo.py
index deaeb80..6ab97de 100644
--- a/src/osmo_gsm_tester/pcu_osmo.py
+++ b/src/osmo_gsm_tester/pcu_osmo.py
@@ -20,7 +20,7 @@
 import os
 import pprint
 import tempfile
-from . import log, config, util, template, process, event_loop, pcu
+from . import log, config, util, template, process, pcu
 
 class OsmoPcu(pcu.Pcu):
     inst = None
diff --git a/src/osmo_gsm_tester/pcu_sysmo.py b/src/osmo_gsm_tester/pcu_sysmo.py
index fd1b272..675de50 100644
--- a/src/osmo_gsm_tester/pcu_sysmo.py
+++ b/src/osmo_gsm_tester/pcu_sysmo.py
@@ -19,7 +19,7 @@
 
 import os
 import pprint
-from . import log, config, util, template, process, event_loop
+from . import log, config, util, template, process
 
 class OsmoPcuSysmo(log.Origin):
     suite_run = None
diff --git a/src/osmo_gsm_tester/powersupply.py 
b/src/osmo_gsm_tester/powersupply.py
index 8d52157..86fc010 100644
--- a/src/osmo_gsm_tester/powersupply.py
+++ b/src/osmo_gsm_tester/powersupply.py
@@ -18,7 +18,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from abc import ABCMeta, abstractmethod
-from . import log, event_loop
+from . import log
+from .event_loop import MainLoop
 
 class PowerSupply(log.Origin, metaclass=ABCMeta):
 
@@ -46,7 +47,7 @@
     def power_cycle(self, sleep=0):
         """Turns off the device, waits N.N seconds, then turn on the device."""
         self.power_set(False)
-        event_loop.sleep(self, sleep)
+        MainLoop.sleep(self, sleep)
         self.power_set(True)
 
 
diff --git a/src/osmo_gsm_tester/powersupply_sispm.py 
b/src/osmo_gsm_tester/powersupply_sispm.py
index 91604b4..b35592f 100644
--- a/src/osmo_gsm_tester/powersupply_sispm.py
+++ b/src/osmo_gsm_tester/powersupply_sispm.py
@@ -20,7 +20,8 @@
 import sispm
 from usb.core import USBError
 
-from . import log, event_loop
+from . import log
+from .event_loop import MainLoop
 from .powersupply import PowerSupply
 
 class PowerSupplySispm(PowerSupply):
@@ -50,7 +51,7 @@
             except USBError as e:
                     if e.errno == 16 or e.errno==110:
                         self.log('skip usb error, retry', repr(e))
-                        event_loop.sleep(self, 0.1)
+                        MainLoop.sleep(self, 0.1)
                         continue
                     raise e
 
diff --git a/src/osmo_gsm_tester/process.py b/src/osmo_gsm_tester/process.py
index 4c55fe9..8ae6a55 100644
--- a/src/osmo_gsm_tester/process.py
+++ b/src/osmo_gsm_tester/process.py
@@ -23,7 +23,8 @@
 import signal
 from datetime import datetime
 
-from . import log, event_loop
+from . import log
+from .event_loop import MainLoop
 from .util import Dir
 
 class Process(log.Origin):
@@ -204,7 +205,7 @@
         return self.result is not None
 
     def wait(self, timeout=300):
-        event_loop.wait(self, self.terminated, timeout=timeout)
+        MainLoop.wait(self, self.terminated, timeout=timeout)
 
 
 class RemoteProcess(Process):
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 106994e..a7f91c5 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -21,7 +21,8 @@
 import sys
 import time
 import pprint
-from . import config, log, template, util, resource, schema, event_loop, test
+from . import config, log, template, util, resource, schema, test
+from .event_loop import MainLoop
 from . import osmo_nitb, osmo_hlr, osmo_mgcpgw, osmo_mgw, osmo_msc, osmo_bsc, 
osmo_stp, osmo_ggsn, osmo_sgsn, modem, esme
 
 class Timeout(Exception):
@@ -150,7 +151,7 @@
         try:
             log.large_separator(self.trial.name(), self.name(), sublevel=2)
             self.mark_start()
-            event_loop.register_poll_func(self.poll)
+            MainLoop.register_poll_func(self.poll)
             if not self.reserved_resources:
                 self.reserve_resources()
             for t in self.tests:
@@ -175,7 +176,7 @@
             self.stop_processes()
             self.objects_cleanup()
             self.free_resources()
-            event_loop.unregister_poll_func(self.poll)
+            MainLoop.unregister_poll_func(self.poll)
             self.duration = time.time() - self.start_timestamp
 
             passed, skipped, failed = self.count_test_results()
@@ -344,7 +345,7 @@
         sys.__stdout__.write(msg)
         sys.__stdout__.write('\n')
         sys.__stdout__.flush()
-        entered = util.input_polling('> ', event_loop.poll)
+        entered = util.input_polling('> ', MainLoop.poll)
         self.log('prompt entered:', repr(entered))
         return entered
 
diff --git a/src/osmo_gsm_tester/test.py b/src/osmo_gsm_tester/test.py
index 82b290f..59d503c 100644
--- a/src/osmo_gsm_tester/test.py
+++ b/src/osmo_gsm_tester/test.py
@@ -54,8 +54,9 @@
             log.large_separator(self.suite_run.trial.name(), 
self.suite_run.name(), self.name(), sublevel=3)
             self.status = Test.UNKNOWN
             self.start_timestamp = time.time()
-            from . import suite, event_loop, sms
-            testenv.setup(self.suite_run, self, suite, event_loop, sms)
+            from . import suite, sms
+            from .event_loop import MainLoop
+            testenv.setup(self.suite_run, self, suite, MainLoop, sms)
             with self.redirect_stdout():
                 util.run_python_file('%s.%s' % 
(self.suite_run.definition.name(), self.basename),
                                      self.path)

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifa1940cd00138ebc72fbcfd45a0e28246f7a5ed9
Gerrit-PatchSet: 2
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pes...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pau Espin Pedrol <pes...@sysmocom.de>

Reply via email to