<p>Pau Espin Pedrol has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/10413">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Cleanup of class scoped variables<br><br>After bug described in OS#3456 and fixed in last commit, let's<br>categorize and place variables in its correct plac to avoid similar<br>issus. We leave under the class keyword (class scoped variables) the<br>attributes which are to be used as static class attributes. All other<br>ones are initialized during __init__(). This way w avoid scenarios in<br>which while using an object from an instance attribute we end up reading<br>a class scoped variable which is shared among all instances.<br><br>Change-Id: I5ad4cac34a9f49eaf42966c01c9c5a4d3f3e9dc8<br>---<br>M src/osmo_gsm_tester/bts.py<br>M src/osmo_gsm_tester/bts_octphy.py<br>M src/osmo_gsm_tester/bts_osmo.py<br>M src/osmo_gsm_tester/bts_osmotrx.py<br>M src/osmo_gsm_tester/bts_sysmo.py<br>M src/osmo_gsm_tester/esme.py<br>M src/osmo_gsm_tester/event_loop.py<br>M src/osmo_gsm_tester/modem.py<br>M src/osmo_gsm_tester/osmo_bsc.py<br>M src/osmo_gsm_tester/osmo_ggsn.py<br>M src/osmo_gsm_tester/osmo_hlr.py<br>M src/osmo_gsm_tester/osmo_mgcpgw.py<br>M src/osmo_gsm_tester/osmo_mgw.py<br>M src/osmo_gsm_tester/osmo_msc.py<br>M src/osmo_gsm_tester/osmo_nitb.py<br>M src/osmo_gsm_tester/osmo_sgsn.py<br>M src/osmo_gsm_tester/osmo_stp.py<br>M src/osmo_gsm_tester/osmocon.py<br>M src/osmo_gsm_tester/pcu.py<br>M src/osmo_gsm_tester/pcu_osmo.py<br>M src/osmo_gsm_tester/pcu_sysmo.py<br>M src/osmo_gsm_tester/process.py<br>M src/osmo_gsm_tester/sms.py<br>M src/osmo_gsm_tester/smsc.py<br>M src/osmo_gsm_tester/suite.py<br>M src/osmo_gsm_tester/test.py<br>M src/osmo_gsm_tester/trial.py<br>27 files changed, 92 insertions(+), 145 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/13/10413/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/bts.py b/src/osmo_gsm_tester/bts.py</span><br><span>index 0f3ef1c..041b2bc 100644</span><br><span>--- a/src/osmo_gsm_tester/bts.py</span><br><span>+++ b/src/osmo_gsm_tester/bts.py</span><br><span>@@ -25,24 +25,21 @@</span><br><span> from . import log, config, util, template, process, schema, pcu_osmo</span><br><span> </span><br><span> class Bts(log.Origin, metaclass=ABCMeta):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    conf = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc = None</span><br><span style="color: hsl(0, 100%, 40%);">-    sgsn = None</span><br><span style="color: hsl(0, 100%, 40%);">-    lac = None</span><br><span style="color: hsl(0, 100%, 40%);">-    rac = None</span><br><span style="color: hsl(0, 100%, 40%);">-    cellid = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bvci = None</span><br><span style="color: hsl(0, 100%, 40%);">-    defaults_cfg_name = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _num_trx = 1</span><br><span style="color: hsl(0, 100%, 40%);">-    _max_trx = None</span><br><span style="color: hsl(0, 100%, 40%);">-    overlay_trx_list = []</span><br><span> </span><br><span> ##############</span><br><span> # PROTECTED</span><br><span> ##############</span><br><span>     def __init__(self, suite_run, conf, name, defaults_cfg_name):</span><br><span>         super().__init__(log.C_RUN, name)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.bsc = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.sgsn = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.lac = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.rac = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.cellid = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.bvci = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self._num_trx = 1</span><br><span style="color: hsl(120, 100%, 40%);">+        self._max_trx = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.overlay_trx_list = []</span><br><span>         self.suite_run = suite_run</span><br><span>         self.conf = conf</span><br><span>         self.defaults_cfg_name = defaults_cfg_name</span><br><span>diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py</span><br><span>index 318c30d..f1a0ce8 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_octphy.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_octphy.py</span><br><span>@@ -27,16 +27,14 @@</span><br><span> ##############</span><br><span> # PROTECTED</span><br><span> ##############</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    env = None</span><br><span> </span><br><span>     BIN_BTS_OCTPHY = 'osmo-bts-octphy'</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     CONF_BTS_OCTPHY = 'osmo-bts-octphy.cfg'</span><br><span> </span><br><span>     def __init__(self, suite_run, conf):</span><br><span>         super().__init__(suite_run, conf, OsmoBtsOctphy.BIN_BTS_OCTPHY, 'osmo_bts_octphy')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.inst = None</span><br><span>         self.env = {}</span><br><span>         self.values = {}</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/bts_osmo.py b/src/osmo_gsm_tester/bts_osmo.py</span><br><span>index b9b7fef..32784bd 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_osmo.py</span><br><span>@@ -24,14 +24,14 @@</span><br><span> from . import log, config, util, template, process, bts, pcu_osmo</span><br><span> </span><br><span> class OsmoBts(bts.Bts, metaclass=ABCMeta):</span><br><span style="color: hsl(0, 100%, 40%);">-    proc_bts = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _pcu = None</span><br><span> </span><br><span> ##############</span><br><span> # PROTECTED</span><br><span> ##############</span><br><span>     def __init__(self, suite_run, conf, name, defaults_cfg_name):</span><br><span>         super().__init__(suite_run, conf, name, defaults_cfg_name)</span><br><span style="color: hsl(120, 100%, 40%);">+        self._pcu = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.proc_bts = None</span><br><span>         if len(self.pcu_socket_path().encode()) > 107:</span><br><span>             raise log.Error('Path for pcu socket is longer than max allowed len for unix socket path (107):', self.pcu_socket_path())</span><br><span> </span><br><span>@@ -75,9 +75,9 @@</span><br><span> ##############</span><br><span> # PROTECTED</span><br><span> ##############</span><br><span style="color: hsl(0, 100%, 40%);">-    pcu_sk_tmp_dir = None</span><br><span> </span><br><span>     def __init__(self, suite_run, conf, name, defaults_cfg_name):</span><br><span style="color: hsl(120, 100%, 40%);">+        self.pcu_sk_tmp_dir = None</span><br><span>         super().__init__(suite_run, conf, name, defaults_cfg_name)</span><br><span> </span><br><span> ########################</span><br><span>diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py</span><br><span>index b9310f8..1584eb2 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_osmotrx.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_osmotrx.py</span><br><span>@@ -27,10 +27,6 @@</span><br><span> ##############</span><br><span> # PROTECTED</span><br><span> ##############</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    env = None</span><br><span style="color: hsl(0, 100%, 40%);">-    trx = None</span><br><span> </span><br><span>     BIN_BTS_TRX = 'osmo-bts-trx'</span><br><span>     BIN_PCU = 'osmo-pcu'</span><br><span>@@ -39,6 +35,9 @@</span><br><span> </span><br><span>     def __init__(self, suite_run, conf):</span><br><span>         super().__init__(suite_run, conf, OsmoBtsTrx.BIN_BTS_TRX, 'osmo_bts_trx')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.inst = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.trx = None</span><br><span>         self.env = {}</span><br><span> </span><br><span>     def trx_remote_ip(self):</span><br><span>diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py</span><br><span>index 65c9279..e3f4823 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_sysmo.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_sysmo.py</span><br><span>@@ -25,10 +25,6 @@</span><br><span> ##############</span><br><span> # PROTECTED</span><br><span> ##############</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    remote_inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    remote_dir = None</span><br><span> </span><br><span>     REMOTE_DIR = '/osmo-gsm-tester-bts'</span><br><span>     BTS_SYSMO_BIN = 'osmo-bts-sysmo'</span><br><span>@@ -36,6 +32,10 @@</span><br><span> </span><br><span>     def __init__(self, suite_run, conf):</span><br><span>         super().__init__(suite_run, conf, SysmoBts.BTS_SYSMO_BIN, 'osmo_bts_sysmo')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.inst = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.remote_inst = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.remote_dir = None</span><br><span>         self.remote_user = 'root'</span><br><span> </span><br><span>     def _direct_pcu_enabled(self):</span><br><span>diff --git a/src/osmo_gsm_tester/esme.py b/src/osmo_gsm_tester/esme.py</span><br><span>index 78421f6..9653fbf 100644</span><br><span>--- a/src/osmo_gsm_tester/esme.py</span><br><span>+++ b/src/osmo_gsm_tester/esme.py</span><br><span>@@ -34,8 +34,6 @@</span><br><span> MAX_PASSWD_LEN = 16</span><br><span> </span><br><span> class Esme(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    client = None</span><br><span style="color: hsl(0, 100%, 40%);">-    smsc = None</span><br><span> </span><br><span>     MSGMODE_TRANSACTION = smpplib.consts.SMPP_MSGMODE_FORWARD</span><br><span>     MSGMODE_STOREFORWARD = smpplib.consts.SMPP_MSGMODE_STOREFORWARD</span><br><span>@@ -45,6 +43,8 @@</span><br><span>         # Get last characters of msisdn to stay inside MAX_SYS_ID_LEN. Similar to modulus operator.</span><br><span>         self.set_system_id('esme-' + self.msisdn[-11:])</span><br><span>         super().__init__(log.C_TST, self.system_id)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.client = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.smsc = None</span><br><span>         self.set_password('esme-pwd')</span><br><span>         self.connected = False</span><br><span>         self.bound = False</span><br><span>diff --git a/src/osmo_gsm_tester/event_loop.py b/src/osmo_gsm_tester/event_loop.py</span><br><span>index 0f647c2..fe88ef4 100644</span><br><span>--- a/src/osmo_gsm_tester/event_loop.py</span><br><span>+++ b/src/osmo_gsm_tester/event_loop.py</span><br><span>@@ -23,10 +23,12 @@</span><br><span> from . import log</span><br><span> </span><br><span> class DeferredHandling:</span><br><span style="color: hsl(0, 100%, 40%);">-    defer_queue = []</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def __init__(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        self.defer_queue = []</span><br><span> </span><br><span>     def handle_queue(self):</span><br><span style="color: hsl(0, 100%, 40%);">-        while DeferredHandling.defer_queue:</span><br><span style="color: hsl(120, 100%, 40%);">+        while self.defer_queue:</span><br><span>             handler, args, kwargs = self.defer_queue.pop(0)</span><br><span>             handler(*args, **kwargs)</span><br><span> </span><br><span>@@ -34,10 +36,10 @@</span><br><span>         self.defer_queue.append((handler, args, kwargs))</span><br><span> </span><br><span> class WaitRequest:</span><br><span style="color: hsl(0, 100%, 40%);">-    timeout_ack = False</span><br><span style="color: hsl(0, 100%, 40%);">-    condition_ack = False</span><br><span> </span><br><span>     def __init__(self, condition, condition_args, condition_kwargs, timeout, timestep):</span><br><span style="color: hsl(120, 100%, 40%);">+        self.timeout_ack = False</span><br><span style="color: hsl(120, 100%, 40%);">+        self.condition_ack = False</span><br><span>         self.timeout_started = time.time()</span><br><span>         self.timeout = timeout</span><br><span>         self.condition = condition</span><br><span>@@ -53,12 +55,9 @@</span><br><span>             self.timeout_ack = True</span><br><span> </span><br><span> class EventLoop:</span><br><span style="color: hsl(0, 100%, 40%);">-    poll_funcs = []</span><br><span style="color: hsl(0, 100%, 40%);">-    gloop = None</span><br><span style="color: hsl(0, 100%, 40%);">-    gctx = None</span><br><span style="color: hsl(0, 100%, 40%);">-    deferred_handling = None</span><br><span> </span><br><span>     def __init__(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        self.poll_funcs = []</span><br><span>         self.gloop = GLib.MainLoop()</span><br><span>         self.gctx = self.gloop.get_context()</span><br><span>         self.deferred_handling = DeferredHandling()</span><br><span>diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py</span><br><span>index 59fcc76..d0bbf23 100644</span><br><span>--- a/src/osmo_gsm_tester/modem.py</span><br><span>+++ b/src/osmo_gsm_tester/modem.py</span><br><span>@@ -321,10 +321,6 @@</span><br><span> </span><br><span> class Modem(log.Origin):</span><br><span>     'convenience for ofono Modem interaction'</span><br><span style="color: hsl(0, 100%, 40%);">-    msisdn = None</span><br><span style="color: hsl(0, 100%, 40%);">-    sms_received_list = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _ki = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _imsi = None</span><br><span> </span><br><span>     CTX_PROT_IPv4 = 'ip'</span><br><span>     CTX_PROT_IPv6 = 'ipv6'</span><br><span>@@ -336,6 +332,9 @@</span><br><span>         self.dbuspath = get_dbuspath_from_syspath(self.syspath)</span><br><span>         super().__init__(log.C_TST, self.dbuspath)</span><br><span>         self.dbg('creating from syspath %s', self.syspath)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.msisdn = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self._ki = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self._imsi = None</span><br><span>         self.sms_received_list = []</span><br><span>         self.dbus = ModemDbusInteraction(self.dbuspath)</span><br><span>         self.register_attempts = 0</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_bsc.py b/src/osmo_gsm_tester/osmo_bsc.py</span><br><span>index 323b9ec..0e5bbbe 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_bsc.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_bsc.py</span><br><span>@@ -24,19 +24,14 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoBsc(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bts = None</span><br><span style="color: hsl(0, 100%, 40%);">-    encryption = None</span><br><span style="color: hsl(0, 100%, 40%);">-    rsl_ip = None</span><br><span style="color: hsl(0, 100%, 40%);">-    mgw = None</span><br><span style="color: hsl(0, 100%, 40%);">-    stp = None</span><br><span> </span><br><span>     def __init__(self, suite_run, msc, mgw, stp, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-bsc_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.encryption = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.rsl_ip = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span>         self.bts = []</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_ggsn.py b/src/osmo_gsm_tester/osmo_ggsn.py</span><br><span>index 9f23c64..2fdc792 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_ggsn.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_ggsn.py</span><br><span>@@ -23,14 +23,12 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoGgsn(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span> </span><br><span>     def __init__(self, suite_run, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-ggsn_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/osmo_hlr.py b/src/osmo_gsm_tester/osmo_hlr.py</span><br><span>index 635f711..a4633e3 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_hlr.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_hlr.py</span><br><span>@@ -25,8 +25,6 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoHlr(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span>     run_dir = None</span><br><span>     config_file = None</span><br><span>     process = None</span><br><span>@@ -34,9 +32,12 @@</span><br><span> </span><br><span>     def __init__(self, suite_run, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-hlr_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.next_subscriber_id = 1</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span style="color: hsl(0, 100%, 40%);">-        self.bts = []</span><br><span> </span><br><span>     def start(self):</span><br><span>         self.log('Starting osmo-hlr')</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_mgcpgw.py b/src/osmo_gsm_tester/osmo_mgcpgw.py</span><br><span>index bebb9d5..82b9149 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_mgcpgw.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_mgcpgw.py</span><br><span>@@ -23,14 +23,12 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoMgcpgw(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span> </span><br><span>     def __init__(self, suite_run, ip_address, bts_ip):</span><br><span>         super().__init__(log.C_RUN, 'osmo-mgcpgw_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span>         # hack: so far mgcpgw needs one specific BTS IP.</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_mgw.py b/src/osmo_gsm_tester/osmo_mgw.py</span><br><span>index abac4aa..1d5596e 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_mgw.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_mgw.py</span><br><span>@@ -23,14 +23,12 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoMgw(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span> </span><br><span>     def __init__(self, suite_run, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-mgw_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/osmo_msc.py b/src/osmo_gsm_tester/osmo_msc.py</span><br><span>index 0e458fe..192926c 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_msc.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_msc.py</span><br><span>@@ -23,20 +23,15 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder, smsc</span><br><span> </span><br><span> class OsmoMsc(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config = None</span><br><span style="color: hsl(0, 100%, 40%);">-    smsc = None</span><br><span style="color: hsl(0, 100%, 40%);">-    stp = None</span><br><span style="color: hsl(0, 100%, 40%);">-    encryption = None</span><br><span style="color: hsl(0, 100%, 40%);">-    authentication = None</span><br><span> </span><br><span>     def __init__(self, suite_run, hlr, mgw, stp, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-msc_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.encryption = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.authentication = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span>         self.hlr = hlr</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py</span><br><span>index 48037a6..66ab2a6 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_nitb.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_nitb.py</span><br><span>@@ -24,17 +24,13 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder, smsc</span><br><span> </span><br><span> class OsmoNitb(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bts = None</span><br><span style="color: hsl(0, 100%, 40%);">-    smsc = None</span><br><span style="color: hsl(0, 100%, 40%);">-    encryption = None</span><br><span> </span><br><span>     def __init__(self, suite_run, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-nitb_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.encryption = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span>         self.bts = []</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_sgsn.py b/src/osmo_gsm_tester/osmo_sgsn.py</span><br><span>index 8659186..07cf059 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_sgsn.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_sgsn.py</span><br><span>@@ -23,16 +23,12 @@</span><br><span> from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoSgsn(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span style="color: hsl(0, 100%, 40%);">-    hlr = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ggsn = None</span><br><span> </span><br><span>     def __init__(self, suite_run, hlr, ggsn, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-sgsn_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.hlr = hlr</span><br><span>         self.ggsn = ggsn</span><br><span>diff --git a/src/osmo_gsm_tester/osmo_stp.py b/src/osmo_gsm_tester/osmo_stp.py</span><br><span>index ced138b..5a7f0d3 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_stp.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_stp.py</span><br><span>@@ -23,14 +23,12 @@</span><br><span> from . import log, util, config, template, process, pcap_recorder</span><br><span> </span><br><span> class OsmoStp(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    ip_address = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    config_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span> </span><br><span>     def __init__(self, suite_run, ip_address):</span><br><span>         super().__init__(log.C_RUN, 'osmo-stp_%s' % ip_address.get('addr'))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.config_file = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.ip_address = ip_address</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/osmocon.py b/src/osmo_gsm_tester/osmocon.py</span><br><span>index 5b1e145..8b6040f 100644</span><br><span>--- a/src/osmo_gsm_tester/osmocon.py</span><br><span>+++ b/src/osmo_gsm_tester/osmocon.py</span><br><span>@@ -24,10 +24,6 @@</span><br><span> from .event_loop import MainLoop</span><br><span> </span><br><span> class Osmocon(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    process = None</span><br><span style="color: hsl(0, 100%, 40%);">-    sk_tmp_dir = None</span><br><span> </span><br><span>     FIRMWARE_FILE="opt/osmocom-bb/target/firmware/board/compal_e88/layer1.compalram.bin"</span><br><span> </span><br><span>@@ -37,6 +33,8 @@</span><br><span>             raise log.Error('osmocon_phone contains no attr "serial_device"')</span><br><span>         self.serial_device = os.path.realpath(serial_device)</span><br><span>         super().__init__(log.C_RUN, 'osmocon_%s' % os.path.basename(self.serial_device))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.conf = conf</span><br><span>         self.sk_tmp_dir = tempfile.mkdtemp('', 'ogtosmoconsk')</span><br><span>diff --git a/src/osmo_gsm_tester/pcu.py b/src/osmo_gsm_tester/pcu.py</span><br><span>index 0260296..9ec8f35 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu.py</span><br><span>@@ -22,9 +22,6 @@</span><br><span> </span><br><span> class Pcu(log.Origin, metaclass=ABCMeta):</span><br><span>     """PCU Abstract Base Class."""</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bts = None</span><br><span> </span><br><span> ##############</span><br><span> # PROTECTED</span><br><span>diff --git a/src/osmo_gsm_tester/pcu_osmo.py b/src/osmo_gsm_tester/pcu_osmo.py</span><br><span>index 50ae134..ad8ebce 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu_osmo.py</span><br><span>@@ -23,14 +23,14 @@</span><br><span> from . import log, config, util, template, process, pcu</span><br><span> </span><br><span> class OsmoPcu(pcu.Pcu):</span><br><span style="color: hsl(0, 100%, 40%);">-    inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    env = None</span><br><span> </span><br><span>     BIN_PCU = 'osmo-pcu'</span><br><span>     PCU_OSMO_CFG = 'osmo-pcu.cfg'</span><br><span> </span><br><span>     def __init__(self, suite_run, bts, conf):</span><br><span>         super().__init__(suite_run, bts, conf, OsmoPcu.BIN_PCU)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.inst = None</span><br><span>         self.conf = conf</span><br><span>         self.env = {}</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/pcu_sysmo.py b/src/osmo_gsm_tester/pcu_sysmo.py</span><br><span>index b97852a..cd3b75e 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu_sysmo.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu_sysmo.py</span><br><span>@@ -22,14 +22,6 @@</span><br><span> from . import log, config, util, template, process</span><br><span> </span><br><span> class OsmoPcuSysmo(log.Origin):</span><br><span style="color: hsl(0, 100%, 40%);">-    suite_run = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc = None</span><br><span style="color: hsl(0, 100%, 40%);">-    run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    remote_inst = None</span><br><span style="color: hsl(0, 100%, 40%);">-    remote_env = None</span><br><span style="color: hsl(0, 100%, 40%);">-    remote_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    sysmobts = None</span><br><span> </span><br><span>     REMOTE_DIR = '/osmo-gsm-tester-pcu'</span><br><span>     PCU_SYSMO_BIN = 'osmo-pcu'</span><br><span>@@ -37,6 +29,12 @@</span><br><span> </span><br><span>     def __init__(self, suite_run, sysmobts, conf):</span><br><span>         super().__init__(log.C_RUN, self.PCU_SYSMO_BIN)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.bsc = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.inst = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.remote_inst = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.remote_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.sysmobts = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.sysmobts = sysmobts</span><br><span>         self.conf = conf</span><br><span>diff --git a/src/osmo_gsm_tester/process.py b/src/osmo_gsm_tester/process.py</span><br><span>index c13ded0..ad2405d 100644</span><br><span>--- a/src/osmo_gsm_tester/process.py</span><br><span>+++ b/src/osmo_gsm_tester/process.py</span><br><span>@@ -29,13 +29,11 @@</span><br><span> </span><br><span> class Process(log.Origin):</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    process_obj = None</span><br><span style="color: hsl(0, 100%, 40%);">-    outputs = None</span><br><span style="color: hsl(0, 100%, 40%);">-    result = None</span><br><span style="color: hsl(0, 100%, 40%);">-    killed = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     def __init__(self, name, run_dir, popen_args, **popen_kwargs):</span><br><span>         super().__init__(log.C_RUN, name)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.process_obj = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.result = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.killed = None</span><br><span>         self.name_str = name</span><br><span>         self.run_dir = run_dir</span><br><span>         self.popen_args = popen_args</span><br><span>diff --git a/src/osmo_gsm_tester/sms.py b/src/osmo_gsm_tester/sms.py</span><br><span>index e264b66..0118517 100644</span><br><span>--- a/src/osmo_gsm_tester/sms.py</span><br><span>+++ b/src/osmo_gsm_tester/sms.py</span><br><span>@@ -19,7 +19,6 @@</span><br><span> </span><br><span> class Sms:</span><br><span>     _last_sms_idx = 0</span><br><span style="color: hsl(0, 100%, 40%);">-    msg = None</span><br><span> </span><br><span>     def __init__(self, src_msisdn=None, dst_msisdn=None, *tokens):</span><br><span>         Sms._last_sms_idx += 1</span><br><span>diff --git a/src/osmo_gsm_tester/smsc.py b/src/osmo_gsm_tester/smsc.py</span><br><span>index 4837f37..1a0859c 100644</span><br><span>--- a/src/osmo_gsm_tester/smsc.py</span><br><span>+++ b/src/osmo_gsm_tester/smsc.py</span><br><span>@@ -20,7 +20,6 @@</span><br><span> from . import log, config, util, template, process</span><br><span> </span><br><span> class Smsc:</span><br><span style="color: hsl(0, 100%, 40%);">-    esmes = None</span><br><span> </span><br><span>     SMSC_POLICY_CLOSED = 'closed'</span><br><span>     SMSC_POLICY_ACCEPT_ALL = 'accept-all'</span><br><span>diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py</span><br><span>index db4a8dc..c712a75 100644</span><br><span>--- a/src/osmo_gsm_tester/suite.py</span><br><span>+++ b/src/osmo_gsm_tester/suite.py</span><br><span>@@ -63,21 +63,17 @@</span><br><span>     PASS = 'PASS'</span><br><span>     FAIL = 'FAIL'</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    trial = None</span><br><span style="color: hsl(0, 100%, 40%);">-    status = None</span><br><span style="color: hsl(0, 100%, 40%);">-    start_timestamp = None</span><br><span style="color: hsl(0, 100%, 40%);">-    duration = None</span><br><span style="color: hsl(0, 100%, 40%);">-    resources_pool = None</span><br><span style="color: hsl(0, 100%, 40%);">-    reserved_resources = None</span><br><span style="color: hsl(0, 100%, 40%);">-    objects_to_clean_up = None</span><br><span style="color: hsl(0, 100%, 40%);">-    test_import_modules_to_clean_up = []</span><br><span style="color: hsl(0, 100%, 40%);">-    _resource_requirements = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _config = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _processes = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     def __init__(self, trial, suite_scenario_str, suite_definition, scenarios=[]):</span><br><span>         super().__init__(log.C_TST, suite_scenario_str)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.start_timestamp = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.duration = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.reserved_resources = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.objects_to_clean_up = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.test_import_modules_to_clean_up = []</span><br><span style="color: hsl(120, 100%, 40%);">+        self._resource_requirements = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self._config = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self._processes = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self._run_dir = None</span><br><span>         self.trial = trial</span><br><span>         self.definition = suite_definition</span><br><span>         self.scenarios = scenarios</span><br><span>diff --git a/src/osmo_gsm_tester/test.py b/src/osmo_gsm_tester/test.py</span><br><span>index b706dac..6f141f1 100644</span><br><span>--- a/src/osmo_gsm_tester/test.py</span><br><span>+++ b/src/osmo_gsm_tester/test.py</span><br><span>@@ -31,11 +31,10 @@</span><br><span>     PASS = 'pass'</span><br><span>     FAIL = 'FAIL'</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    _run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     def __init__(self, suite_run, test_basename):</span><br><span>         self.basename = test_basename</span><br><span>         super().__init__(log.C_TST, self.basename)</span><br><span style="color: hsl(120, 100%, 40%);">+        self._run_dir = None</span><br><span>         self.suite_run = suite_run</span><br><span>         self.path = os.path.join(self.suite_run.definition.suite_dir, self.basename)</span><br><span>         self.status = Test.UNKNOWN</span><br><span>diff --git a/src/osmo_gsm_tester/trial.py b/src/osmo_gsm_tester/trial.py</span><br><span>index d54e96c..149d34c 100644</span><br><span>--- a/src/osmo_gsm_tester/trial.py</span><br><span>+++ b/src/osmo_gsm_tester/trial.py</span><br><span>@@ -36,12 +36,6 @@</span><br><span>     PASS = 'PASS'</span><br><span>     FAIL = 'FAIL'</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    path = None</span><br><span style="color: hsl(0, 100%, 40%);">-    dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    _run_dir = None</span><br><span style="color: hsl(0, 100%, 40%);">-    bin_tars = None</span><br><span style="color: hsl(0, 100%, 40%);">-    log_targets = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     @staticmethod</span><br><span>     def next(trials_dir):</span><br><span> </span><br><span>@@ -63,6 +57,8 @@</span><br><span>         self.bin_tars = []</span><br><span>         self.suites = []</span><br><span>         self.status = Trial.UNKNOWN</span><br><span style="color: hsl(120, 100%, 40%);">+        self._run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+        self.log_targets = None</span><br><span> </span><br><span>     def __repr__(self):</span><br><span>         return self.name()</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10413">change 10413</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/10413"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I5ad4cac34a9f49eaf42966c01c9c5a4d3f3e9dc8 </div>
<div style="display:none"> Gerrit-Change-Number: 10413 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>