[PATCH] osmo-gsm-tester[master]: Use a subdir of run_dir for each test

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 Jun 14 12:54:36 UTC 2017


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

Use a subdir of run_dir for each test

Processes created have the scope of the test, so we should store
everything in a per-suite_run/per-test directory, otherwise everything
is stored in the same trial run_dir directory and it's really messy.

We pass a test object instead of a suite_run object to all the classes
requiring to store something on disk.

Change-Id: I06be2dd21710e14c1337d13b1fe6c2f68f037957
---
M src/osmo_gsm_tester/bts_osmotrx.py
M src/osmo_gsm_tester/bts_sysmo.py
M src/osmo_gsm_tester/osmo_bsc.py
M src/osmo_gsm_tester/osmo_hlr.py
M src/osmo_gsm_tester/osmo_mgcpgw.py
M src/osmo_gsm_tester/osmo_msc.py
M src/osmo_gsm_tester/osmo_nitb.py
M src/osmo_gsm_tester/osmo_stp.py
M src/osmo_gsm_tester/pcap_recorder.py
M src/osmo_gsm_tester/suite.py
10 files changed, 90 insertions(+), 76 deletions(-)


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

diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index 7d12c85..7ebe6cc 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -22,7 +22,7 @@
 from . import log, config, util, template, process, event_loop
 
 class OsmoBtsTrx(log.Origin):
-    suite_run = None
+    test = None
     bsc = None
     run_dir = None
     inst = None
@@ -35,9 +35,9 @@
 
     CONF_BTS_TRX = 'osmo-bts-trx.cfg'
 
-    def __init__(self, suite_run, conf):
+    def __init__(self, test, conf):
         super().__init__(log.C_RUN, OsmoBtsTrx.BIN_BTS_TRX)
-        self.suite_run = suite_run
+        self.test = test
         self.conf = conf
         self.env = {}
 
@@ -48,13 +48,13 @@
     def start(self):
         if self.bsc is None:
             raise RuntimeError('BTS needs to be added to a BSC or NITB before it can be started')
-        self.suite_run.poll()
+        self.test.suite_run.poll()
 
         self.log('Starting to connect to', self.bsc)
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
 
-        self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(OsmoBtsTrx.BIN_BTS_TRX)))
+        self.inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst(OsmoBtsTrx.BIN_BTS_TRX)))
         lib = self.inst.child('lib')
         if not os.path.isdir(lib):
             raise RuntimeError('No lib/ in %r' % self.inst)
@@ -68,7 +68,7 @@
                             '-c', os.path.abspath(self.config_file),
                             '-i', self.bsc.addr())
         #self.launch_process(OsmoBtsTrx.BIN_PCU, '-r', '1')
-        self.suite_run.poll()
+        self.test.suite_run.poll()
 
     def trx_ready(self):
         if not self.proc_trx or not self.proc_trx.is_running:
@@ -83,7 +83,7 @@
         proc = process.Process(binary_name, run_dir,
                                (binary,) + args,
                                env=self.env)
-        self.suite_run.remember_to_stop(proc)
+        self.test.suite_run.remember_to_stop(proc)
         proc.launch()
         return proc
 
@@ -94,7 +94,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(osmo_bts_trx=config.get_defaults('osmo_bts_trx'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(osmo_bts_trx=dict(oml_remote_ip=self.bsc.addr())))
         config.overlay(values, dict(osmo_bts_trx=self.conf))
 
diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py
index 30fff0e..b48fa09 100644
--- a/src/osmo_gsm_tester/bts_sysmo.py
+++ b/src/osmo_gsm_tester/bts_sysmo.py
@@ -22,7 +22,7 @@
 from . import log, config, util, template, process
 
 class SysmoBts(log.Origin):
-    suite_run = None
+    test = None
     bsc = None
     run_dir = None
     inst = None
@@ -34,9 +34,9 @@
     BTS_SYSMO_BIN = 'osmo-bts-sysmo'
     BTS_SYSMO_CFG = 'osmo-bts-sysmo.cfg'
 
-    def __init__(self, suite_run, conf):
+    def __init__(self, test, conf):
         super().__init__(log.C_RUN, self.BTS_SYSMO_BIN)
-        self.suite_run = suite_run
+        self.test = test
         self.conf = conf
         self.remote_env = {}
         self.remote_user = 'root'
@@ -45,10 +45,10 @@
         if self.bsc is None:
             raise RuntimeError('BTS needs to be added to a BSC or NITB before it can be started')
         log.log('Starting sysmoBTS to connect to', self.bsc)
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
 
-        self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(SysmoBts.BTS_SYSMO_BIN)))
+        self.inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst(SysmoBts.BTS_SYSMO_BIN)))
         lib = self.inst.child('lib')
         if not os.path.isdir(lib):
             raise log.Error('No lib/ in', self.inst)
@@ -95,7 +95,7 @@
 
     def launch_remote(self, name, popen_args, remote_cwd=None):
         proc = self._process_remote(name, popen_args, remote_cwd)
-        self.suite_run.remember_to_stop(proc)
+        self.test.suite_run.remember_to_stop(proc)
         proc.launch()
 
     def run_local(self, name, popen_args):
@@ -118,7 +118,7 @@
         self.dbg(config_file=self.config_file)
 
         values = { 'osmo_bts_sysmo': config.get_defaults('osmo_bts_sysmo') }
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, { 'osmo_bts_sysmo': { 'oml_remote_ip': self.bsc.addr() } })
         config.overlay(values, { 'osmo_bts_sysmo': self.conf })
 
diff --git a/src/osmo_gsm_tester/osmo_bsc.py b/src/osmo_gsm_tester/osmo_bsc.py
index 5447118..19a9988 100644
--- a/src/osmo_gsm_tester/osmo_bsc.py
+++ b/src/osmo_gsm_tester/osmo_bsc.py
@@ -23,29 +23,29 @@
 from . import log, util, config, template, process, osmo_ctrl, pcap_recorder
 
 class OsmoBsc(log.Origin):
-    suite_run = None
+    test = None
     ip_address = None
     run_dir = None
     config_file = None
     process = None
     bts = None
 
-    def __init__(self, suite_run, msc, ip_address):
+    def __init__(self, test, msc, ip_address):
         super().__init__(log.C_RUN, 'osmo-bsc_%s' % ip_address.get('addr'))
-        self.suite_run = suite_run
+        self.test = test
         self.ip_address = ip_address
         self.bts = []
         self.msc = msc
 
     def start(self):
         self.log('Starting osmo-bsc')
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
 
         # NOTE: While OsmoMSC and OsmoBSC live in the same git repository, the
         # osmo-msc build will also provide the OsmoBSC binary. As soon as the
         # repositories are separate, there shall be a separate artifact.
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-msc')))
+        inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst('osmo-msc')))
 
         binary = inst.child('bin', 'osmo-bsc')
         if not os.path.isfile(binary):
@@ -55,7 +55,7 @@
             raise RuntimeError('No lib/ in %r' % inst)
 
         iface = util.ip_to_iface(self.addr())
-        pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+        pcap_recorder.PcapRecorder(self.test, self.run_dir.new_dir('pcap'), iface,
                                    'host %s and port not 22' % self.addr())
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
@@ -65,7 +65,7 @@
                                        (binary, '-c',
                                         os.path.abspath(self.config_file)),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -73,7 +73,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(bsc=config.get_defaults('bsc'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(bsc=dict(ip_address=self.ip_address)))
 
         bts_list = []
diff --git a/src/osmo_gsm_tester/osmo_hlr.py b/src/osmo_gsm_tester/osmo_hlr.py
index 110faa5..817ca09 100644
--- a/src/osmo_gsm_tester/osmo_hlr.py
+++ b/src/osmo_gsm_tester/osmo_hlr.py
@@ -24,25 +24,25 @@
 from . import log, util, config, template, process, osmo_ctrl, pcap_recorder
 
 class OsmoHlr(log.Origin):
-    suite_run = None
+    test = None
     ip_address = None
     run_dir = None
     config_file = None
     process = None
     next_subscriber_id = 1
 
-    def __init__(self, suite_run, ip_address):
+    def __init__(self, test, ip_address):
         super().__init__(log.C_RUN, 'osmo-hlr_%s' % ip_address.get('addr'))
-        self.suite_run = suite_run
+        self.test = test
         self.ip_address = ip_address
         self.bts = []
 
     def start(self):
         self.log('Starting osmo-hlr')
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
 
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-hlr')))
+        inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst('osmo-hlr')))
 
         binary = inst.child('bin', 'osmo-hlr')
         if not os.path.isfile(binary):
@@ -59,7 +59,7 @@
         self.run_local('create_hlr_db', ('/bin/sh', '-c', 'sqlite3 %r < %r' % (self.db_file, sql_input)))
 
         iface = util.ip_to_iface(self.addr())
-        pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+        pcap_recorder.PcapRecorder(self.test, self.run_dir.new_dir('pcap'), iface,
                                    'host %s' % self.addr())
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
@@ -70,7 +70,7 @@
                                         '-c', os.path.abspath(self.config_file),
                                         '--database', self.db_file),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -78,7 +78,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(hlr=config.get_defaults('hlr'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(hlr=dict(ip_address=self.ip_address)))
 
         self.dbg('HLR CONFIG:\n' + pprint.pformat(values))
@@ -115,7 +115,7 @@
 
     def subscriber_add(self, modem, msisdn=None):
         if msisdn is None:
-            msisdn = self.suite_run.resources_pool.next_msisdn(modem)
+            msisdn = self.test.suite_run.resources_pool.next_msisdn(modem)
         modem.set_msisdn(msisdn)
         subscriber_id = self.next_subscriber_id
         self.next_subscriber_id += 1
diff --git a/src/osmo_gsm_tester/osmo_mgcpgw.py b/src/osmo_gsm_tester/osmo_mgcpgw.py
index b385274..7939ef3 100644
--- a/src/osmo_gsm_tester/osmo_mgcpgw.py
+++ b/src/osmo_gsm_tester/osmo_mgcpgw.py
@@ -23,24 +23,24 @@
 from . import log, util, config, template, process, osmo_ctrl, pcap_recorder
 
 class OsmoMgcpgw(log.Origin):
-    suite_run = None
+    test = None
     ip_address = None
     run_dir = None
     config_file = None
     process = None
 
-    def __init__(self, suite_run, ip_address, bts_ip):
+    def __init__(self, test, ip_address, bts_ip):
         super().__init__(log.C_RUN, 'osmo-mgcpgw_%s' % ip_address.get('addr'))
-        self.suite_run = suite_run
+        self.test = test
         self.ip_address = ip_address
         # hack: so far mgcpgw needs one specific BTS IP.
         self.bts_ip = bts_ip
 
     def start(self):
         self.log('Starting osmo-mgcpgw')
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-msc')))
+        inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst('osmo-msc')))
         binary = inst.child('bin', 'osmo-bsc_mgcp')
         if not os.path.isfile(binary):
             raise RuntimeError('Binary missing: %r' % binary)
@@ -49,7 +49,7 @@
             raise RuntimeError('No lib/ in %r' % inst)
 
         iface = util.ip_to_iface(self.addr())
-        pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+        pcap_recorder.PcapRecorder(self.test, self.run_dir.new_dir('pcap'), iface,
                                    'host %s and port not 22' % self.addr())
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
@@ -59,7 +59,7 @@
                                        (binary, '-c',
                                         os.path.abspath(self.config_file)),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -67,7 +67,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(mgcpgw=config.get_defaults('mgcpgw'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(mgcpgw=dict(ip_address=self.ip_address, bts_ip=self.bts_ip)))
 
         self.dbg('MGCPGW CONFIG:\n' + pprint.pformat(values))
diff --git a/src/osmo_gsm_tester/osmo_msc.py b/src/osmo_gsm_tester/osmo_msc.py
index d265e36..7b89874 100644
--- a/src/osmo_gsm_tester/osmo_msc.py
+++ b/src/osmo_gsm_tester/osmo_msc.py
@@ -23,7 +23,7 @@
 from . import log, util, config, template, process, osmo_ctrl, pcap_recorder, smsc
 
 class OsmoMsc(log.Origin, smsc.Smsc):
-    suite_run = None
+    test = None
     ip_address = None
     run_dir = None
     config_file = None
@@ -31,19 +31,19 @@
     hlr = None
     config = None
 
-    def __init__(self, suite_run, hlr, mgcpgw, ip_address):
+    def __init__(self, test, hlr, mgcpgw, ip_address):
         log.Origin.__init__(self, log.C_RUN, 'osmo-msc_%s' % ip_address.get('addr'))
         smsc.Smsc.__init__(self, (ip_address.get('addr'), 2775))
-        self.suite_run = suite_run
+        self.test = test
         self.ip_address = ip_address
         self.hlr = hlr
         self.mgcpgw = mgcpgw
 
     def start(self):
         self.log('Starting osmo-msc')
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-msc')))
+        inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst('osmo-msc')))
         binary = inst.child('bin', 'osmo-msc')
         if not os.path.isfile(binary):
             raise RuntimeError('Binary missing: %r' % binary)
@@ -52,7 +52,7 @@
             raise RuntimeError('No lib/ in %r' % inst)
 
         iface = util.ip_to_iface(self.addr())
-        pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+        pcap_recorder.PcapRecorder(self.test, self.run_dir.new_dir('pcap'), iface,
                                    'host %s and port not 22' % self.addr())
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
@@ -62,7 +62,7 @@
                                        (binary, '-c',
                                         os.path.abspath(self.config_file)),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -70,7 +70,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(msc=config.get_defaults('msc'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(msc=dict(ip_address=self.ip_address)))
         config.overlay(values, self.mgcpgw.conf_for_msc())
         config.overlay(values, self.hlr.conf_for_msc())
diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py
index d18fc1a..d2c8fc5 100644
--- a/src/osmo_gsm_tester/osmo_nitb.py
+++ b/src/osmo_gsm_tester/osmo_nitb.py
@@ -24,25 +24,25 @@
 from . import log, util, config, template, process, osmo_ctrl, pcap_recorder, smsc
 
 class OsmoNitb(log.Origin, smsc.Smsc):
-    suite_run = None
+    test = None
     ip_address = None
     run_dir = None
     config_file = None
     process = None
     bts = None
 
-    def __init__(self, suite_run, ip_address):
+    def __init__(self, test, ip_address):
         log.Origin.__init__(self, log.C_RUN, 'osmo-nitb_%s' % ip_address.get('addr'))
         smsc.Smsc.__init__(self, (ip_address.get('addr'), 2775))
-        self.suite_run = suite_run
+        self.test = test
         self.ip_address = ip_address
         self.bts = []
 
     def start(self):
         self.log('Starting osmo-nitb')
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-nitb')))
+        inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst('osmo-nitb')))
         binary = inst.child('bin', 'osmo-nitb')
         if not os.path.isfile(binary):
             raise RuntimeError('Binary missing: %r' % binary)
@@ -51,7 +51,7 @@
             raise RuntimeError('No lib/ in %r' % inst)
 
         iface = util.ip_to_iface(self.addr())
-        pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+        pcap_recorder.PcapRecorder(self.test, self.run_dir.new_dir('pcap'), iface,
                                    'host %s and port not 22' % self.addr())
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
@@ -61,7 +61,7 @@
                                        (binary, '-c',
                                        os.path.abspath(self.config_file)),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -69,7 +69,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(nitb=config.get_defaults('nitb'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(nitb=dict(ip_address=self.ip_address)))
 
         bts_list = []
@@ -103,7 +103,7 @@
 
     def subscriber_add(self, modem, msisdn=None):
         if msisdn is None:
-            msisdn = self.suite_run.resources_pool.next_msisdn(modem)
+            msisdn = self.test.suite_run.resources_pool.next_msisdn(modem)
         modem.set_msisdn(msisdn)
         self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi())
         OsmoNitbCtrl(self).subscriber_add(modem.imsi(), msisdn, modem.ki())
diff --git a/src/osmo_gsm_tester/osmo_stp.py b/src/osmo_gsm_tester/osmo_stp.py
index f1ad6fc..930d5cc 100644
--- a/src/osmo_gsm_tester/osmo_stp.py
+++ b/src/osmo_gsm_tester/osmo_stp.py
@@ -23,25 +23,25 @@
 from . import log, util, config, template, process, pcap_recorder
 
 class OsmoStp(log.Origin):
-    suite_run = None
+    test = None
     ip_address = None
     run_dir = None
     config_file = None
     process = None
 
-    def __init__(self, suite_run, ip_address):
+    def __init__(self, test, ip_address):
         super().__init__(log.C_RUN, 'osmo-stp_%s' % ip_address.get('addr'))
-        self.suite_run = suite_run
+        self.test = test
         self.ip_address = ip_address
 
     def start(self):
         self.log('Starting osmo-stp')
-        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.test.get_run_dir().new_dir(self.name()))
         self.configure()
 
         # NOTE: libosmo-sccp provides osmo-stp and is built as a dependency of
         # OsmoMSC.
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-msc')))
+        inst = util.Dir(os.path.abspath(self.test.suite_run.trial.get_inst('osmo-msc')))
 
         binary = inst.child('bin', 'osmo-stp')
         if not os.path.isfile(binary):
@@ -52,7 +52,7 @@
 
         # TODO: osmo-stp is not yet configurable to a specific IP address
         #iface = util.ip_to_iface(self.addr())
-        #pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+        #pcap_recorder.PcapRecorder(self.test, self.run_dir.new_dir('pcap'), iface,
         #                           'host %s and port not 22' % self.addr())
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
@@ -62,7 +62,7 @@
                                        (binary, '-c',
                                         os.path.abspath(self.config_file)),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -70,7 +70,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(stp=config.get_defaults('stp'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.test.suite_run.config())
         config.overlay(values, dict(stp=dict(ip_address=self.ip_address)))
 
         self.dbg('STP CONFIG:\n' + pprint.pformat(values))
diff --git a/src/osmo_gsm_tester/pcap_recorder.py b/src/osmo_gsm_tester/pcap_recorder.py
index 398ec6c..be08ccb 100644
--- a/src/osmo_gsm_tester/pcap_recorder.py
+++ b/src/osmo_gsm_tester/pcap_recorder.py
@@ -26,13 +26,13 @@
 
 class PcapRecorder(log.Origin):
 
-    def __init__(self, suite_run, run_dir, iface=None, filters=''):
+    def __init__(self, test, run_dir, iface=None, filters=''):
         self.iface = iface
         if not self.iface:
             self.iface = "any"
         self.filters = filters
         super().__init__(log.C_RUN, 'pcap-recorder_%s' % self.iface, filters=self.filters)
-        self.suite_run = suite_run
+        self.test = test
         self.run_dir = run_dir
         self.start()
 
@@ -44,7 +44,7 @@
                                        '-i', self.iface,
                                        '-w', dumpfile,
                                        self.filters))
-        self.suite_run.remember_to_stop(self.process)
+        self.test.suite_run.remember_to_stop(self.process)
         self.process.launch()
 
     def running(self):
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 979c30f..33a1b35 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -76,6 +76,8 @@
     PASS = 'pass'
     FAIL = 'FAIL'
 
+    _run_dir = None
+
     def __init__(self, suite_run, test_basename):
         self.basename = test_basename
         super().__init__(log.C_TST, self.basename)
@@ -86,6 +88,11 @@
         self.duration = 0
         self.fail_type = None
         self.fail_message = None
+
+    def get_run_dir(self):
+        if self._run_dir is None:
+            self._run_dir = util.Dir(self.suite_run.get_run_dir().new_dir(self._name))
+        return self._run_dir
 
     def run(self):
         try:
@@ -165,6 +172,7 @@
     _resource_requirements = None
     _config = None
     _processes = None
+    _run_dir = None
 
     def __init__(self, trial, suite_scenario_str, suite_definition, scenarios=[]):
         super().__init__(log.C_TST, suite_scenario_str)
@@ -209,6 +217,11 @@
             config.combine(combination, c)
         return combination
 
+    def get_run_dir(self):
+        if self._run_dir is None:
+            self._run_dir = util.Dir(self.trial.get_run_dir().new_dir(self.name()))
+        return self._run_dir
+
     def resource_requirements(self):
         if self._resource_requirements is None:
             self._resource_requirements = self.combined('resources')
@@ -236,6 +249,7 @@
                 if names and not test.name() in names:
                     test.set_skip()
                     continue
+                self.current_test = test
                 test.run()
                 self.stop_processes()
                 self.objects_cleanup()
@@ -304,35 +318,35 @@
     def nitb(self, ip_address=None):
         if ip_address is None:
             ip_address = self.ip_address()
-        return osmo_nitb.OsmoNitb(self, ip_address)
+        return osmo_nitb.OsmoNitb(self.current_test, ip_address)
 
     def hlr(self, ip_address=None):
         if ip_address is None:
             ip_address = self.ip_address()
-        return osmo_hlr.OsmoHlr(self, ip_address)
+        return osmo_hlr.OsmoHlr(self.current_test, ip_address)
 
     def mgcpgw(self, ip_address=None, bts_ip=None):
         if ip_address is None:
             ip_address = self.ip_address()
-        return osmo_mgcpgw.OsmoMgcpgw(self, ip_address, bts_ip)
+        return osmo_mgcpgw.OsmoMgcpgw(self.current_test, ip_address, bts_ip)
 
     def msc(self, hlr, mgcpgw, ip_address=None):
         if ip_address is None:
             ip_address = self.ip_address()
-        return osmo_msc.OsmoMsc(self, hlr, mgcpgw, ip_address)
+        return osmo_msc.OsmoMsc(self.current_test, hlr, mgcpgw, ip_address)
 
     def bsc(self, msc, ip_address=None):
         if ip_address is None:
             ip_address = self.ip_address()
-        return osmo_bsc.OsmoBsc(self, msc, ip_address)
+        return osmo_bsc.OsmoBsc(self.current_test, msc, ip_address)
 
     def stp(self, ip_address=None):
         if ip_address is None:
             ip_address = self.ip_address()
-        return osmo_stp.OsmoStp(self, ip_address)
+        return osmo_stp.OsmoStp(self.current_test, ip_address)
 
     def bts(self, specifics=None):
-        return bts_obj(self, self.reserved_resources.get(resource.R_BTS, specifics=specifics))
+        return bts_obj(self.current_test, self.reserved_resources.get(resource.R_BTS, specifics=specifics))
 
     def modem(self, specifics=None):
         conf = self.reserved_resources.get(resource.R_MODEM, specifics=specifics)

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I06be2dd21710e14c1337d13b1fe6c2f68f037957
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