From a442cb8e5f4107611e0bb3d8ccebe9ab876fe26c Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Tue, 5 May 2020 12:54:37 +0200 Subject: [PATCH] Update obj classes in obj/ to use testenv instead of suite_run Change-Id: Idf41243a497de7bc507b9f1cd1b38640f456f815 --- src/osmo_gsm_tester/core/suite.py | 11 +++-- src/osmo_gsm_tester/core/test.py | 2 +- src/osmo_gsm_tester/obj/bsc_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/bts.py | 8 ++-- src/osmo_gsm_tester/obj/bts_nanobts.py | 36 +++++++-------- src/osmo_gsm_tester/obj/bts_oc2g.py | 14 +++--- src/osmo_gsm_tester/obj/bts_octphy.py | 16 +++---- src/osmo_gsm_tester/obj/bts_osmo.py | 10 ++--- src/osmo_gsm_tester/obj/bts_osmotrx.py | 52 +++++++++++----------- src/osmo_gsm_tester/obj/bts_osmovirtual.py | 16 +++---- src/osmo_gsm_tester/obj/bts_sysmo.py | 14 +++--- src/osmo_gsm_tester/obj/enb.py | 10 ++--- src/osmo_gsm_tester/obj/enb_amarisoft.py | 12 ++--- src/osmo_gsm_tester/obj/enb_srs.py | 14 +++--- src/osmo_gsm_tester/obj/epc.py | 14 +++--- src/osmo_gsm_tester/obj/epc_amarisoft.py | 14 +++--- src/osmo_gsm_tester/obj/epc_srs.py | 14 +++--- src/osmo_gsm_tester/obj/ggsn_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/hlr_osmo.py | 16 +++---- src/osmo_gsm_tester/obj/iperf3.py | 26 +++++------ src/osmo_gsm_tester/obj/mgcpgw_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/mgw_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/ms.py | 4 +- src/osmo_gsm_tester/obj/ms_amarisoft.py | 18 ++++---- src/osmo_gsm_tester/obj/ms_driver.py | 8 ++-- src/osmo_gsm_tester/obj/ms_ofono.py | 4 +- src/osmo_gsm_tester/obj/ms_srs.py | 16 +++---- src/osmo_gsm_tester/obj/msc_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/nitb_osmo.py | 16 +++---- src/osmo_gsm_tester/obj/osmocon.py | 10 ++--- src/osmo_gsm_tester/obj/pcap_recorder.py | 6 +-- src/osmo_gsm_tester/obj/pcu.py | 8 ++-- src/osmo_gsm_tester/obj/pcu_oc2g.py | 12 ++--- src/osmo_gsm_tester/obj/pcu_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/pcu_sysmo.py | 12 ++--- src/osmo_gsm_tester/obj/sgsn_osmo.py | 14 +++--- src/osmo_gsm_tester/obj/stp_osmo.py | 14 +++--- src/osmo_gsm_tester/testenv.py | 17 ++----- src/osmo_ms_driver/starter.py | 28 ++++++------ 39 files changed, 282 insertions(+), 288 deletions(-) diff --git a/src/osmo_gsm_tester/core/suite.py b/src/osmo_gsm_tester/core/suite.py index 0995f8ff..1bd6a63a 100644 --- a/src/osmo_gsm_tester/core/suite.py +++ b/src/osmo_gsm_tester/core/suite.py @@ -72,13 +72,16 @@ class SuiteRun(log.Origin): self._resource_modifiers = None self._config = None self._run_dir = None - self.trial = trial + self._trial = trial self.definition = suite_definition self.scenarios = scenarios self.resources_pool = resource.ResourcesPool() self.status = SuiteRun.UNKNOWN self.load_tests() + def trial(self): + return self._trial + def load_tests(self): self.tests = [] for test_basename in self.definition.test_basenames: @@ -109,7 +112,7 @@ class SuiteRun(log.Origin): 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())) + self._run_dir = util.Dir(self._trial.get_run_dir().new_dir(self.name())) return self._run_dir def resource_requirements(self): @@ -142,7 +145,7 @@ class SuiteRun(log.Origin): def run_tests(self, names=None): suite_libdir = os.path.join(self.definition.suite_dir, 'lib') try: - log.large_separator(self.trial.name(), self.name(), sublevel=2) + log.large_separator(self._trial.name(), self.name(), sublevel=2) self.mark_start() util.import_path_prepend(suite_libdir) if not self.reserved_resources: @@ -171,7 +174,7 @@ class SuiteRun(log.Origin): else: self.status = SuiteRun.FAIL - log.large_separator(self.trial.name(), self.name(), self.status, sublevel=2, space_above=False) + log.large_separator(self._trial.name(), self.name(), self.status, sublevel=2, space_above=False) def passed(self): return self.status == SuiteRun.PASS diff --git a/src/osmo_gsm_tester/core/test.py b/src/osmo_gsm_tester/core/test.py index 76c9ce96..8ab124bd 100644 --- a/src/osmo_gsm_tester/core/test.py +++ b/src/osmo_gsm_tester/core/test.py @@ -58,7 +58,7 @@ class Test(log.Origin): testenv_obj = None try: self.log_target = log.FileLogTarget(self.get_run_dir().new_child('log')).set_all_levels(log.L_DBG).style_change(trace=True) - log.large_separator(self.suite_run.trial.name(), self.suite_run.name(), self.name(), sublevel=3) + 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() testenv_obj = testenv.setup(self.suite_run, self) diff --git a/src/osmo_gsm_tester/obj/bsc_osmo.py b/src/osmo_gsm_tester/obj/bsc_osmo.py index 046ef942..22b2dad2 100644 --- a/src/osmo_gsm_tester/obj/bsc_osmo.py +++ b/src/osmo_gsm_tester/obj/bsc_osmo.py @@ -34,7 +34,7 @@ def on_register_schemas(): class OsmoBsc(log.Origin): - def __init__(self, suite_run, msc, mgw, stp, ip_address): + def __init__(self, testenv, msc, mgw, stp, ip_address): super().__init__(log.C_RUN, 'osmo-bsc_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None @@ -42,7 +42,7 @@ class OsmoBsc(log.Origin): self.encryption = None self.rsl_ip = None self.use_osmux = "off" - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address self.bts = [] self.msc = msc @@ -51,10 +51,10 @@ class OsmoBsc(log.Origin): def start(self): self.log('Starting osmo-bsc') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bsc'))) + inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bsc'))) binary = inst.child('bin', 'osmo-bsc') if not os.path.isfile(binary): @@ -67,7 +67,7 @@ class OsmoBsc(log.Origin): filter = 'host %s or host %s and port not 22' % (self.addr(), self.rsl_ip) else: filter = 'host %s and port not 22' % self.addr() - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, filter) + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, filter) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -76,7 +76,7 @@ class OsmoBsc(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -84,7 +84,7 @@ class OsmoBsc(log.Origin): 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.testenv.suite().config()) config.overlay(values, dict(bsc=dict(ip_address=self.ip_address))) config.overlay(values, self.mgw.conf_for_client()) config.overlay(values, self.stp.conf_for_client()) diff --git a/src/osmo_gsm_tester/obj/bts.py b/src/osmo_gsm_tester/obj/bts.py index e23b555a..56e5aaa8 100644 --- a/src/osmo_gsm_tester/obj/bts.py +++ b/src/osmo_gsm_tester/obj/bts.py @@ -50,7 +50,7 @@ class Bts(log.Origin, metaclass=ABCMeta): ############## # PROTECTED ############## - def __init__(self, suite_run, conf, name, defaults_cfg_name): + def __init__(self, testenv, conf, name, defaults_cfg_name): super().__init__(log.C_RUN, name) self.bsc = None self.sgsn = None @@ -61,7 +61,7 @@ class Bts(log.Origin, metaclass=ABCMeta): self._num_trx = 1 self._max_trx = None self.overlay_trx_list = [] - self.suite_run = suite_run + self.testenv = testenv self.conf = conf self.defaults_cfg_name = defaults_cfg_name self._init_num_trx() @@ -162,7 +162,7 @@ class Bts(log.Origin, metaclass=ABCMeta): 'Nothing to do by default. Subclass can override if required.' pass - def get_instance_by_type(suite_run, conf): + def get_instance_by_type(testenv, conf): """Allocate a BTS child class based on type. Opts are passed to the newly created object.""" bts_type = conf.get('type') if bts_type is None: @@ -188,7 +188,7 @@ class Bts(log.Origin, metaclass=ABCMeta): bts_class = NanoBts else: raise log.Error('BTS type not supported:', bts_type) - return bts_class(suite_run, conf) + return bts_class(testenv, conf) ################### # PUBLIC (test API included) diff --git a/src/osmo_gsm_tester/obj/bts_nanobts.py b/src/osmo_gsm_tester/obj/bts_nanobts.py index 3e9b035a..5c07bdaa 100644 --- a/src/osmo_gsm_tester/obj/bts_nanobts.py +++ b/src/osmo_gsm_tester/obj/bts_nanobts.py @@ -30,8 +30,8 @@ class NanoBts(bts.Bts): ############## # PROTECTED ############## - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, 'nanobts_%s' % conf.get('label', 'nolabel'), 'nanobts') + def __init__(self, testenv, conf): + super().__init__(testenv, conf, 'nanobts_%s' % conf.get('label', 'nolabel'), 'nanobts') self.pwsup_list = [] self._pcu = None @@ -94,7 +94,7 @@ class NanoBts(bts.Bts): def start(self, keepalive=False): if self.conf.get('ipa_unit_id') is None: raise log.Error('No attribute ipa_unit_id provided in conf!') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self._configure() unitid = int(self.conf.get('ipa_unit_id')) @@ -104,7 +104,7 @@ class NanoBts(bts.Bts): self.dbg('Powering cycling NanoBTS TRX') pwsup.power_cycle(1.0) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, '%s and port not 22' % self.get_pcap_filter_all_trx_ip()) @@ -116,14 +116,14 @@ class NanoBts(bts.Bts): local_bind_ip = util.dst_ip_get_local_bind(bts_trx_ip) self.log('Finding nanobts %s, binding on %s...' % (bts_trx_ip, local_bind_ip)) - ipfind = AbisIpFind(self.suite_run, self.run_dir, local_bind_ip, 'preconf') + ipfind = AbisIpFind(self.testenv, self.run_dir, local_bind_ip, 'preconf') ipfind.start() ipfind.wait_bts_ready(bts_trx_ip) running_unitid, running_trx = ipfind.get_unitid_by_ip(bts_trx_ip) self.log('Found nanobts %s with unit_id %d trx %d' % (bts_trx_ip, running_unitid, running_trx)) ipfind.stop() - ipconfig = IpAccessConfig(self.suite_run, self.run_dir, bts_trx_ip) + ipconfig = IpAccessConfig(self.testenv, self.run_dir, bts_trx_ip) running_oml_ip = ipconfig.get_oml_ip() if running_unitid != unitid or running_trx != trx_i: @@ -142,7 +142,7 @@ class NanoBts(bts.Bts): MainLoop.sleep(self, 20) self.dbg('Starting to connect id %d trx %d to' % (unitid, trx_i), self.bsc) - ipfind = AbisIpFind(self.suite_run, self.run_dir, local_bind_ip, 'postconf') + ipfind = AbisIpFind(self.testenv, self.run_dir, local_bind_ip, 'postconf') ipfind.start() ipfind.wait_bts_ready(bts_trx_ip) self.log('nanoBTS id %d trx %d configured and running' % (unitid, trx_i)) @@ -171,12 +171,12 @@ class NanoBts(bts.Bts): def pcu(self): if not self._pcu: - self._pcu = pcu.PcuDummy(self.suite_run, self, self.conf) + self._pcu = pcu.PcuDummy(self.testenv, self, self.conf) return self._pcu class AbisIpFind(log.Origin): - suite_run = None + testenv = None parent_run_dir = None run_dir = None inst = None @@ -187,16 +187,16 @@ class AbisIpFind(log.Origin): BIN_ABISIP_FIND = 'abisip-find' BTS_UNIT_ID_RE = re.compile("Unit_ID='(?P\d+)/\d+/(?P\d+)'") - def __init__(self, suite_run, parent_run_dir, bind_ip, name_suffix): + def __init__(self, testenv, parent_run_dir, bind_ip, name_suffix): super().__init__(log.C_RUN, AbisIpFind.BIN_ABISIP_FIND + '-' + name_suffix) - self.suite_run = suite_run + self.testenv = testenv self.parent_run_dir = parent_run_dir self.bind_ip = bind_ip self.env = {} def start(self): self.run_dir = util.Dir(self.parent_run_dir.new_dir(self.name())) - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bsc'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bsc'))) lib = self.inst.child('lib') if not os.path.isdir(lib): @@ -209,11 +209,11 @@ class AbisIpFind(log.Origin): self.proc = process.Process(self.name(), self.run_dir, (ipfind_path, '-i', '1', '-b', self.bind_ip), env=env) - self.suite_run.remember_to_stop(self.proc) + self.testenv.remember_to_stop(self.proc) self.proc.launch() def stop(self): - self.suite_run.stop_process(self.proc) + self.testenv.stop_process(self.proc) def get_line_by_ip(self, ipaddr): """Get latest line (more up to date) from abisip-find based on ip address.""" @@ -246,7 +246,7 @@ class AbisIpFind(log.Origin): MainLoop.sleep(self, 2) class IpAccessConfig(log.Origin): - suite_run = None + testenv = None parent_run_dir = None run_dir = None inst = None @@ -255,9 +255,9 @@ class IpAccessConfig(log.Origin): BIN_IPACCESS_CONFIG = 'ipaccess-config' - def __init__(self, suite_run, parent_run_dir, bts_ip): + def __init__(self, testenv, parent_run_dir, bts_ip): super().__init__(log.C_RUN, IpAccessConfig.BIN_IPACCESS_CONFIG) - self.suite_run = suite_run + self.testenv = testenv self.parent_run_dir = parent_run_dir self.bts_ip = bts_ip self.env = {} @@ -274,7 +274,7 @@ class IpAccessConfig(log.Origin): def run(self, name_suffix, *args): self.run_dir = util.Dir(self.parent_run_dir.new_dir(self.name()+'-'+name_suffix)) - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bsc'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bsc'))) lib = self.inst.child('lib') self.env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } self.proc = self.create_process(IpAccessConfig.BIN_IPACCESS_CONFIG, *args) diff --git a/src/osmo_gsm_tester/obj/bts_oc2g.py b/src/osmo_gsm_tester/obj/bts_oc2g.py index 4a59eeed..ee86cc34 100644 --- a/src/osmo_gsm_tester/obj/bts_oc2g.py +++ b/src/osmo_gsm_tester/obj/bts_oc2g.py @@ -31,8 +31,8 @@ class OsmoBtsOC2G(bts_osmo.OsmoBts): BTS_OC2G_BIN = 'osmo-bts-oc2g' BTS_OC2G_CFG = 'osmo-bts-oc2g.cfg' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, OsmoBtsOC2G.BTS_OC2G_BIN, 'osmo_bts_oc2g') + def __init__(self, testenv, conf): + super().__init__(testenv, conf, OsmoBtsOC2G.BTS_OC2G_BIN, 'osmo_bts_oc2g') self.run_dir = None self.inst = None self.remote_inst = None @@ -44,7 +44,7 @@ class OsmoBtsOC2G(bts_osmo.OsmoBts): return util.str2bool(self.conf.get('direct_pcu')) def create_pcu(self): - return pcu_oc2g.OsmoPcuOC2G(self.suite_run, self, self.conf) + return pcu_oc2g.OsmoPcuOC2G(self.testenv, self, self.conf) def configure(self): if self.bsc is None: @@ -54,7 +54,7 @@ class OsmoBtsOC2G(bts_osmo.OsmoBts): self.dbg(config_file=self.config_file) values = { 'osmo_bts_oc2g': config.get_defaults('osmo_bts_oc2g') } - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_bts_oc2g': { 'oml_remote_ip': self.bsc.addr(), @@ -100,10 +100,10 @@ class OsmoBtsOC2G(bts_osmo.OsmoBts): 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 OsmoBtsOC2G to connect to', self.bsc) - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(OsmoBtsOC2G.BTS_OC2G_BIN))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst(OsmoBtsOC2G.BTS_OC2G_BIN))) lib = self.inst.child('lib') if not os.path.isdir(lib): raise log.Error('No lib/ in', self.inst) @@ -131,6 +131,6 @@ class OsmoBtsOC2G(bts_osmo.OsmoBts): args += ('-M',) self.proc_bts = rem_host.RemoteProcess(OsmoBtsOC2G.BTS_OC2G_BIN, args) - self.suite_run.remember_to_stop(self.proc_bts, keepalive) + self.testenv.remember_to_stop(self.proc_bts, keepalive) self.proc_bts.launch() # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/obj/bts_octphy.py b/src/osmo_gsm_tester/obj/bts_octphy.py index 11570e82..c4d39104 100644 --- a/src/osmo_gsm_tester/obj/bts_octphy.py +++ b/src/osmo_gsm_tester/obj/bts_octphy.py @@ -31,8 +31,8 @@ class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit): BIN_BTS_OCTPHY = 'osmo-bts-octphy' CONF_BTS_OCTPHY = 'osmo-bts-octphy.cfg' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, OsmoBtsOctphy.BIN_BTS_OCTPHY, 'osmo_bts_octphy') + def __init__(self, testenv, conf): + super().__init__(testenv, conf, OsmoBtsOctphy.BIN_BTS_OCTPHY, 'osmo_bts_octphy') self.run_dir = None self.inst = None self.env = {} @@ -46,7 +46,7 @@ class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit): proc = process.Process(binary_name, run_dir, (binary,) + args, env=self.env) - self.suite_run.remember_to_stop(proc) + self.testenv.remember_to_stop(proc) proc.launch() return proc @@ -85,7 +85,7 @@ class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit): self.dbg(config_file=self.config_file) values = dict(osmo_bts_octphy=config.get_defaults('osmo_bts_octphy')) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_bts_octphy': { 'oml_remote_ip': self.bsc.addr(), @@ -117,13 +117,13 @@ class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit): 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.testenv.poll() self.log('Starting to connect to', self.bsc) - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bts'))) btsoct_path = self.inst.child('bin', OsmoBtsOctphy.BIN_BTS_OCTPHY) lib = self.inst.child('lib') if not os.path.isdir(lib): @@ -139,6 +139,6 @@ class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit): self.proc_bts = self.launch_process(OsmoBtsOctphy.BIN_BTS_OCTPHY, '-r', '1', '-c', os.path.abspath(self.config_file), '-i', self.bsc.addr(), '-t', str(self.num_trx())) - self.suite_run.poll() + self.testenv.poll() # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/obj/bts_osmo.py b/src/osmo_gsm_tester/obj/bts_osmo.py index a182c47d..c1a1f5ce 100644 --- a/src/osmo_gsm_tester/obj/bts_osmo.py +++ b/src/osmo_gsm_tester/obj/bts_osmo.py @@ -38,8 +38,8 @@ class OsmoBts(bts.Bts, metaclass=ABCMeta): ############## # PROTECTED ############## - def __init__(self, suite_run, conf, name, defaults_cfg_name): - super().__init__(suite_run, conf, name, defaults_cfg_name) + def __init__(self, testenv, conf, name, defaults_cfg_name): + super().__init__(testenv, conf, name, defaults_cfg_name) self._pcu = None self.proc_bts = None if len(self.pcu_socket_path().encode()) > 107: @@ -86,9 +86,9 @@ class OsmoBtsMainUnit(OsmoBts, metaclass=ABCMeta): # PROTECTED ############## - def __init__(self, suite_run, conf, name, defaults_cfg_name): + def __init__(self, testenv, conf, name, defaults_cfg_name): self.pcu_sk_tmp_dir = None - super().__init__(suite_run, conf, name, defaults_cfg_name) + super().__init__(testenv, conf, name, defaults_cfg_name) ######################## # PUBLIC - INTERNAL API @@ -107,7 +107,7 @@ class OsmoBtsMainUnit(OsmoBts, metaclass=ABCMeta): os.rmdir(self.pcu_sk_tmp_dir) def create_pcu(self): - return pcu_osmo.OsmoPcu(self.suite_run, self, self.conf) + return pcu_osmo.OsmoPcu(self.testenv, self, self.conf) def pcu_socket_path(self): if self.pcu_sk_tmp_dir is None: diff --git a/src/osmo_gsm_tester/obj/bts_osmotrx.py b/src/osmo_gsm_tester/obj/bts_osmotrx.py index 9234fc87..42ed3f84 100644 --- a/src/osmo_gsm_tester/obj/bts_osmotrx.py +++ b/src/osmo_gsm_tester/obj/bts_osmotrx.py @@ -50,8 +50,8 @@ class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): CONF_BTS_TRX = 'osmo-bts-trx.cfg' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, OsmoBtsTrx.BIN_BTS_TRX, 'osmo_bts_trx') + def __init__(self, testenv, conf): + super().__init__(testenv, conf, OsmoBtsTrx.BIN_BTS_TRX, 'osmo_bts_trx') self.run_dir = None self.inst = None self.trx = None @@ -74,7 +74,7 @@ class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): proc = process.Process(binary_name, run_dir, (binary,) + args, env=self.env) - self.suite_run.remember_to_stop(proc, keepalive) + self.testenv.remember_to_stop(proc, keepalive) proc.launch() return proc @@ -86,7 +86,7 @@ class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): values = dict(osmo_bts_trx=config.get_defaults('osmo_bts_trx')) config.overlay(values, dict(osmo_bts_trx=dict(osmo_trx=config.get_defaults('osmo_trx')))) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_bts_trx': { 'oml_remote_ip': self.bsc.addr(), @@ -155,10 +155,10 @@ class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): def start(self, keepalive=False): 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.testenv.poll() self.log('Starting to connect to', self.bsc) - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() # Power cycle all TRX if needed (right now only TRX0 for SC5): @@ -170,12 +170,12 @@ class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): i = i + 1 if self.launch_trx_enabled(): - self.trx = OsmoTrx.get_instance_by_type(self.get_osmo_trx_type(), self.suite_run, self.conf_for_osmotrx()) + self.trx = OsmoTrx.get_instance_by_type(self.get_osmo_trx_type(), self.testenv, self.conf_for_osmotrx()) self.trx.start(keepalive) self.log('Waiting for %s to start up...' % self.trx.name()) MainLoop.wait(self, self.trx.trx_ready) - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bts'))) lib = self.inst.child('lib') if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % self.inst) @@ -184,7 +184,7 @@ class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): self.proc_bts = self.launch_process(keepalive, OsmoBtsTrx.BIN_BTS_TRX, '-r', '1', '-c', os.path.abspath(self.config_file), '-i', self.bsc.addr()) - self.suite_run.poll() + self.testenv.poll() ################################################################################ @@ -195,23 +195,23 @@ class Trx(log.Origin, metaclass=ABCMeta): ############## # PROTECTED ############## - def __init__(self, suite_run, conf, name): + def __init__(self, testenv, conf, name): super().__init__(log.C_RUN, name) - self.suite_run = suite_run + self.testenv = testenv self.conf = conf - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.listen_ip = conf.get('osmo_trx', {}).get('trx_ip') self.remote_user = conf.get('osmo_trx', {}).get('remote_user', None) @classmethod - def get_instance_by_type(cls, type, suite_run, conf): + def get_instance_by_type(cls, type, testenv, conf): KNOWN_OSMOTRX_TYPES = { 'uhd': OsmoTrxUHD, 'lms': OsmoTrxLMS, 'sc5': TrxSC5 } osmo_trx_class = KNOWN_OSMOTRX_TYPES.get(type) - return osmo_trx_class(suite_run, conf) + return osmo_trx_class(testenv, conf) ############## # PUBLIC (test API included) @@ -233,8 +233,8 @@ class OsmoTrx(Trx, metaclass=ABCMeta): ############## # PROTECTED ############## - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, self.binary_name()) + def __init__(self, testenv, conf): + super().__init__(testenv, conf, self.binary_name()) self.env = {} self.log("OSMOTRX CONF: %r" % conf) self.bts_ip = conf.get('osmo_trx', {}).get('bts_ip') @@ -274,7 +274,7 @@ class OsmoTrx(Trx, metaclass=ABCMeta): proc = process.Process(binary_name, run_dir, (binary,) + args, env=self.env) - self.suite_run.remember_to_stop(proc, keepalive) + self.testenv.remember_to_stop(proc, keepalive) proc.launch() return proc @@ -292,7 +292,7 @@ class OsmoTrx(Trx, metaclass=ABCMeta): have_inst = rem_host.inst_compatible_for_remote() if have_inst: - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-trx'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-trx'))) rem_host.recreate_remote_dir(remote_prefix_dir) if have_inst: @@ -311,7 +311,7 @@ class OsmoTrx(Trx, metaclass=ABCMeta): remote_binary = self.binary_name() args = (remote_binary, '-C', remote_config_file) self.proc_trx = rem_host.RemoteProcessFixIgnoreSIGHUP(self.binary_name(), remote_run_dir, args, remote_env=remote_env) - self.suite_run.remember_to_stop(self.proc_trx, keepalive) + self.testenv.remember_to_stop(self.proc_trx, keepalive) self.proc_trx.launch() ############## @@ -323,7 +323,7 @@ class OsmoTrx(Trx, metaclass=ABCMeta): self.start_remotely(keepalive) return # Run locally if ssh user is not set - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-trx'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-trx'))) lib = self.inst.child('lib') self.env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } self.proc_trx = self.launch_process_local(keepalive, self.binary_name(), @@ -337,8 +337,8 @@ class OsmoTrx(Trx, metaclass=ABCMeta): class OsmoTrxUHD(OsmoTrx): BIN_TRX = 'osmo-trx-uhd' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf) + def __init__(self, testenv, conf): + super().__init__(testenv, conf) def binary_name(self): return OsmoTrxUHD.BIN_TRX @@ -346,16 +346,16 @@ class OsmoTrxUHD(OsmoTrx): class OsmoTrxLMS(OsmoTrx): BIN_TRX = 'osmo-trx-lms' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf) + def __init__(self, testenv, conf): + super().__init__(testenv, conf) def binary_name(self): return OsmoTrxLMS.BIN_TRX class TrxSC5(Trx): - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, "sc5-trx") + def __init__(self, testenv, conf): + super().__init__(testenv, conf, "sc5-trx") self.ready = False def start(self, keepalive=False): diff --git a/src/osmo_gsm_tester/obj/bts_osmovirtual.py b/src/osmo_gsm_tester/obj/bts_osmovirtual.py index 495b2a8a..b6470c13 100644 --- a/src/osmo_gsm_tester/obj/bts_osmovirtual.py +++ b/src/osmo_gsm_tester/obj/bts_osmovirtual.py @@ -33,9 +33,9 @@ class OsmoBtsVirtual(bts_osmo.OsmoBtsMainUnit): CONF_BTS = 'osmo-bts-virtual.cfg' - def __init__(self, suite_run, conf): + def __init__(self, testenv, conf): """Initializes the OsmoBtsVirtual.""" - super().__init__(suite_run, conf, OsmoBtsVirtual.BIN_BTS, 'osmo_bts_virtual') + super().__init__(testenv, conf, OsmoBtsVirtual.BIN_BTS, 'osmo_bts_virtual') self.run_dir = None self.inst = None self.env = {} @@ -50,7 +50,7 @@ class OsmoBtsVirtual(bts_osmo.OsmoBtsMainUnit): proc = process.Process(binary_name, run_dir, (binary,) + args, env=self.env) - self.suite_run.remember_to_stop(proc, keepalive) + self.testenv.remember_to_stop(proc, keepalive) proc.launch() return proc @@ -63,7 +63,7 @@ class OsmoBtsVirtual(bts_osmo.OsmoBtsMainUnit): self.dbg(config_file=self.config_file) values = dict(osmo_bts_virtual=config.get_defaults('osmo_bts_virtual')) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_bts_virtual': { 'oml_remote_ip': self.bsc.addr(), @@ -95,13 +95,13 @@ class OsmoBtsVirtual(bts_osmo.OsmoBtsMainUnit): """Handles starting/turning-up the osmo-bts-virtual process.""" 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.testenv.poll() self.log('Starting to connect to', self.bsc) - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bts'))) lib = self.inst.child('lib') if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % self.inst) @@ -110,6 +110,6 @@ class OsmoBtsVirtual(bts_osmo.OsmoBtsMainUnit): self.proc_bts = self.launch_process(keepalive, OsmoBtsVirtual.BIN_BTS, '-r', '1', '-c', os.path.abspath(self.config_file), '-i', self.bsc.addr()) - self.suite_run.poll() + self.testenv.poll() # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/obj/bts_sysmo.py b/src/osmo_gsm_tester/obj/bts_sysmo.py index aecf9772..8f76ecba 100644 --- a/src/osmo_gsm_tester/obj/bts_sysmo.py +++ b/src/osmo_gsm_tester/obj/bts_sysmo.py @@ -31,8 +31,8 @@ class SysmoBts(bts_osmo.OsmoBts): BTS_SYSMO_BIN = 'osmo-bts-sysmo' BTS_SYSMO_CFG = 'osmo-bts-sysmo.cfg' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, SysmoBts.BTS_SYSMO_BIN, 'osmo_bts_sysmo') + def __init__(self, testenv, conf): + super().__init__(testenv, conf, SysmoBts.BTS_SYSMO_BIN, 'osmo_bts_sysmo') self.run_dir = None self.inst = None self.remote_inst = None @@ -44,7 +44,7 @@ class SysmoBts(bts_osmo.OsmoBts): return util.str2bool(self.conf.get('direct_pcu')) def create_pcu(self): - return pcu_sysmo.OsmoPcuSysmo(self.suite_run, self, self.conf) + return pcu_sysmo.OsmoPcuSysmo(self.testenv, self, self.conf) def configure(self): if self.bsc is None: @@ -54,7 +54,7 @@ class SysmoBts(bts_osmo.OsmoBts): 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.testenv.suite().config()) config.overlay(values, { 'osmo_bts_sysmo': { 'oml_remote_ip': self.bsc.addr(), @@ -94,10 +94,10 @@ class SysmoBts(bts_osmo.OsmoBts): 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.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().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.testenv.suite().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) @@ -127,7 +127,7 @@ class SysmoBts(bts_osmo.OsmoBts): args += ('-M',) self.proc_bts = rem_host.RemoteProcess(SysmoBts.BTS_SYSMO_BIN, args) - self.suite_run.remember_to_stop(self.proc_bts, keepalive) + self.testenv.remember_to_stop(self.proc_bts, keepalive) self.proc_bts.launch() # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py index 75146044..4848ea4f 100644 --- a/src/osmo_gsm_tester/obj/enb.py +++ b/src/osmo_gsm_tester/obj/enb.py @@ -66,7 +66,7 @@ class eNodeB(log.Origin, metaclass=ABCMeta): ############## # PROTECTED ############## - def __init__(self, suite_run, conf, name): + def __init__(self, testenv, conf, name): super().__init__(log.C_RUN, '%s' % name) self._conf = conf self._addr = conf.get('addr', None) @@ -86,9 +86,9 @@ class eNodeB(log.Origin, metaclass=ABCMeta): values = dict(enb=config.get_defaults('enb')) for config_specifics in config_specifics_li: config.overlay(values, dict(enb=config.get_defaults(config_specifics))) - config.overlay(values, dict(enb=self.suite_run.config().get('enb', {}))) + config.overlay(values, dict(enb=self.testenv.suite().config().get('enb', {}))) for config_specifics in config_specifics_li: - config.overlay(values, dict(enb=self.suite_run.config().get(config_specifics, {}))) + config.overlay(values, dict(enb=self.testenv.suite().config().get(config_specifics, {}))) config.overlay(values, dict(enb=self._conf)) self._id = int(values['enb'].get('id', None)) assert self._id is not None @@ -192,7 +192,7 @@ class eNodeB(log.Origin, metaclass=ABCMeta): return rf_dev_args - def get_instance_by_type(suite_run, conf): + def get_instance_by_type(testenv, conf): """Allocate a ENB child class based on type. Opts are passed to the newly created object.""" enb_type = conf.get('type') if enb_type is None: @@ -206,7 +206,7 @@ class eNodeB(log.Origin, metaclass=ABCMeta): enb_class = srsENB else: raise log.Error('ENB type not supported:', enb_type) - return enb_class(suite_run, conf) + return enb_class(testenv, conf) ################### # PUBLIC (test API included) diff --git a/src/osmo_gsm_tester/obj/enb_amarisoft.py b/src/osmo_gsm_tester/obj/enb_amarisoft.py index 6f7080a3..a534708f 100644 --- a/src/osmo_gsm_tester/obj/enb_amarisoft.py +++ b/src/osmo_gsm_tester/obj/enb_amarisoft.py @@ -45,8 +45,8 @@ class AmarisoftENB(enb.eNodeB): CFGFILE_DRB = 'amarisoft_drb.cfg' LOGFILE = 'lteenb.log' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, 'amarisoftenb') + def __init__(self, testenv, conf): + super().__init__(testenv, conf, 'amarisoftenb') self.ue = None self.run_dir = None self.inst = None @@ -68,7 +68,7 @@ class AmarisoftENB(enb.eNodeB): self.remote_config_drb_file = None self.remote_log_file = None self.enable_measurements = False - self.suite_run = suite_run + self.testenv = testenv self.remote_user = conf.get('remote_user', None) if not rf_type_valid(conf.get('rf_dev_type', None)): raise log.Error('Invalid rf_dev_type=%s' % conf.get('rf_dev_type', None)) @@ -77,7 +77,7 @@ class AmarisoftENB(enb.eNodeB): if self._bin_prefix is None: self._bin_prefix = os.getenv('AMARISOFT_PATH_ENB', None) if self._bin_prefix == None: - self._bin_prefix = self.suite_run.trial.get_inst('amarisoftenb') + self._bin_prefix = self.testenv.suite().trial().get_inst('amarisoftenb') return self._bin_prefix def cleanup(self): @@ -98,7 +98,7 @@ class AmarisoftENB(enb.eNodeB): def start(self, epc): self.log('Starting AmarisoftENB') self._epc = epc - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() self._start() @@ -119,7 +119,7 @@ class AmarisoftENB(enb.eNodeB): args = (remote_binary, self.remote_config_file) self.process = self.rem_host.RemoteProcess(AmarisoftENB.BINFILE, args, remote_env=remote_env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def gen_conf_file(self, path, filename, values): diff --git a/src/osmo_gsm_tester/obj/enb_srs.py b/src/osmo_gsm_tester/obj/enb_srs.py index 0816ca6f..70f2f356 100644 --- a/src/osmo_gsm_tester/obj/enb_srs.py +++ b/src/osmo_gsm_tester/obj/enb_srs.py @@ -46,8 +46,8 @@ class srsENB(enb.eNodeB): LOGFILE = 'srsenb.log' PCAPFILE = 'srsenb.pcap' - def __init__(self, suite_run, conf): - super().__init__(suite_run, conf, srsENB.BINFILE) + def __init__(self, testenv, conf): + super().__init__(testenv, conf, srsENB.BINFILE) self.ue = None self.run_dir = None self.gen_conf = None @@ -66,7 +66,7 @@ class srsENB(enb.eNodeB): self.remote_log_file = None self.remote_pcap_file = None self.enable_pcap = False - self.suite_run = suite_run + self.testenv = testenv self.remote_user = conf.get('remote_user', None) self._additional_args = [] if not rf_type_valid(conf.get('rf_dev_type', None)): @@ -94,7 +94,7 @@ class srsENB(enb.eNodeB): def start(self, epc): self.log('Starting srsENB') self._epc = epc - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() if self.remote_user: self.start_remotely() @@ -112,7 +112,7 @@ class srsENB(enb.eNodeB): args += tuple(self._additional_args) self.process = self.rem_host.RemoteProcess(srsENB.BINFILE, args, remote_env=remote_env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def start_locally(self): @@ -123,7 +123,7 @@ class srsENB(enb.eNodeB): args += tuple(self._additional_args) self.process = process.Process(self.name(), self.run_dir, args, env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def gen_conf_file(self, path, filename, values): @@ -135,7 +135,7 @@ class srsENB(enb.eNodeB): f.write(r) def configure(self): - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('srslte'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('srslte'))) if not os.path.isdir(self.inst.child('lib')): raise log.Error('No lib/ in', self.inst) if not self.inst.isfile('bin', srsENB.BINFILE): diff --git a/src/osmo_gsm_tester/obj/epc.py b/src/osmo_gsm_tester/obj/epc.py index cbca0fb3..177e6620 100644 --- a/src/osmo_gsm_tester/obj/epc.py +++ b/src/osmo_gsm_tester/obj/epc.py @@ -33,20 +33,20 @@ class EPC(log.Origin, metaclass=ABCMeta): ############## # PROTECTED ############## - def __init__(self, suite_run, run_node, name): + def __init__(self, testenv, run_node, name): super().__init__(log.C_RUN, '%s' % name) self._addr = run_node.run_addr() self.set_name('%s_%s' % (name, self._addr)) - self.suite_run = suite_run + self.testenv = testenv self._run_node = run_node def configure(self, config_specifics_li): values = dict(epc=config.get_defaults('epc')) for config_specifics in config_specifics_li: config.overlay(values, dict(epc=config.get_defaults(config_specifics))) - config.overlay(values, dict(epc=self.suite_run.config().get('epc', {}))) + config.overlay(values, dict(epc=self.testenv.suite().config().get('epc', {}))) for config_specifics in config_specifics_li: - config.overlay(values, dict(epc=self.suite_run.config().get(config_specifics, {}))) + config.overlay(values, dict(epc=self.testenv.suite().config().get(config_specifics, {}))) config.overlay(values, dict(epc={'run_addr': self.addr()})) return values @@ -57,10 +57,10 @@ class EPC(log.Origin, metaclass=ABCMeta): 'Nothing to do by default. Subclass can override if required.' pass - def get_instance_by_type(suite_run, run_node): + def get_instance_by_type(testenv, run_node): """Allocate a EPC child class based on type. Opts are passed to the newly created object.""" values = dict(epc=config.get_defaults('epc')) - config.overlay(values, dict(epc=suite_run.config().get('epc', {}))) + config.overlay(values, dict(epc=testenv.suite().config().get('epc', {}))) epc_type = values['epc'].get('type', None) if epc_type is None: raise RuntimeError('EPC type is not defined!') @@ -74,7 +74,7 @@ class EPC(log.Origin, metaclass=ABCMeta): else: raise log.Error('EPC type not supported:', epc_type) - return epc_class(suite_run, run_node) + return epc_class(testenv, run_node) ################### # PUBLIC (test API included) diff --git a/src/osmo_gsm_tester/obj/epc_amarisoft.py b/src/osmo_gsm_tester/obj/epc_amarisoft.py index 8606e57f..b5304bf5 100644 --- a/src/osmo_gsm_tester/obj/epc_amarisoft.py +++ b/src/osmo_gsm_tester/obj/epc_amarisoft.py @@ -38,8 +38,8 @@ class AmarisoftEPC(epc.EPC): LOGFILE = 'ltemme.log' IFUPFILE = 'mme-ifup' - def __init__(self, suite_run, run_node): - super().__init__(suite_run, run_node, 'amarisoftepc') + def __init__(self, testenv, run_node): + super().__init__(testenv, run_node, 'amarisoftepc') self.run_dir = None self.config_file = None self.log_file = None @@ -58,7 +58,7 @@ class AmarisoftEPC(epc.EPC): if self._bin_prefix is None: self._bin_prefix = os.getenv('AMARISOFT_PATH_EPC', None) if self._bin_prefix == None: - self._bin_prefix = self.suite_run.trial.get_inst('amarisoftepc') + self._bin_prefix = self.testenv.suite().trial().get_inst('amarisoftepc') return self._bin_prefix def cleanup(self): @@ -74,7 +74,7 @@ class AmarisoftEPC(epc.EPC): def start(self): self.log('Starting amarisoftepc') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() if self._run_node.is_local(): self.start_locally() @@ -94,7 +94,7 @@ class AmarisoftEPC(epc.EPC): self.process = self.rem_host.RemoteProcess(AmarisoftEPC.BINFILE, args) #self.process = self.rem_host.RemoteProcessFixIgnoreSIGHUP(AmarisoftEPC.BINFILE, remote_run_dir, args) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def start_locally(self): @@ -112,7 +112,7 @@ class AmarisoftEPC(epc.EPC): args = (binary, os.path.abspath(self.config_file)) self.process = process.Process(self.name(), self.run_dir, args, env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -168,7 +168,7 @@ class AmarisoftEPC(epc.EPC): def subscriber_add(self, modem, msisdn=None, algo_str=None): if msisdn is None: - msisdn = self.suite_run.resources_pool.next_msisdn(modem) + msisdn = self.testenv.msisdn() modem.set_msisdn(msisdn) if algo_str is None: diff --git a/src/osmo_gsm_tester/obj/epc_srs.py b/src/osmo_gsm_tester/obj/epc_srs.py index f859df05..c5e762fb 100644 --- a/src/osmo_gsm_tester/obj/epc_srs.py +++ b/src/osmo_gsm_tester/obj/epc_srs.py @@ -39,8 +39,8 @@ class srsEPC(epc.EPC): PCAPFILE = 'srsepc.pcap' LOGFILE = 'srsepc.log' - def __init__(self, suite_run, run_node): - super().__init__(suite_run, run_node, 'srsepc') + def __init__(self, testenv, run_node): + super().__init__(testenv, run_node, 'srsepc') self.run_dir = None self.config_file = None self.db_file = None @@ -74,7 +74,7 @@ class srsEPC(epc.EPC): def start(self): self.log('Starting srsepc') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() if self._run_node.is_local(): self.start_locally() @@ -95,7 +95,7 @@ class srsEPC(epc.EPC): args = (remote_binary, self.remote_config_file) self.process = self.rem_host.RemoteProcess(srsEPC.BINFILE, args) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def start_locally(self): @@ -114,11 +114,11 @@ class srsEPC(epc.EPC): args = (binary, os.path.abspath(self.config_file)) self.process = process.Process(self.name(), self.run_dir, args, env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('srslte'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('srslte'))) if not os.path.isdir(self.inst.child('lib')): raise log.Error('No lib/ in', self.inst) if not self.inst.isfile('bin', srsEPC.BINFILE): @@ -180,7 +180,7 @@ class srsEPC(epc.EPC): def subscriber_add(self, modem, msisdn=None, algo_str=None): if msisdn is None: - msisdn = self.suite_run.resources_pool.next_msisdn(modem) + msisdn = self.testenv.msisdn() modem.set_msisdn(msisdn) if algo_str is None: diff --git a/src/osmo_gsm_tester/obj/ggsn_osmo.py b/src/osmo_gsm_tester/obj/ggsn_osmo.py index 11745f6c..1435fdbc 100644 --- a/src/osmo_gsm_tester/obj/ggsn_osmo.py +++ b/src/osmo_gsm_tester/obj/ggsn_osmo.py @@ -25,20 +25,20 @@ from . import pcap_recorder class OsmoGgsn(log.Origin): - def __init__(self, suite_run, ip_address): + def __init__(self, testenv, ip_address): super().__init__(log.C_RUN, 'osmo-ggsn_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address def start(self): self.log('Starting osmo-ggsn') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-ggsn'))) + inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-ggsn'))) binary = inst.child('bin', 'osmo-ggsn') if not os.path.isfile(binary): @@ -47,7 +47,7 @@ class OsmoGgsn(log.Origin): if not os.path.isdir(lib): raise log.Error('No lib/ in', inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s' % self.addr()) env = {} @@ -64,7 +64,7 @@ class OsmoGgsn(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -72,7 +72,7 @@ class OsmoGgsn(log.Origin): self.dbg(config_file=self.config_file) values = dict(ggsn=config.get_defaults('ggsn')) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, dict(ggsn=dict(ip_address=self.ip_address))) config.overlay(values, dict(ggsn=dict(statedir=self.run_dir.new_dir('statedir')))) diff --git a/src/osmo_gsm_tester/obj/hlr_osmo.py b/src/osmo_gsm_tester/obj/hlr_osmo.py index 93e5fffb..79175f61 100644 --- a/src/osmo_gsm_tester/obj/hlr_osmo.py +++ b/src/osmo_gsm_tester/obj/hlr_osmo.py @@ -30,21 +30,21 @@ class OsmoHlr(log.Origin): process = None next_subscriber_id = 1 - def __init__(self, suite_run, ip_address): + def __init__(self, testenv, ip_address): super().__init__(log.C_RUN, 'osmo-hlr_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None self.next_subscriber_id = 1 - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address def start(self): self.log('Starting osmo-hlr') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().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.testenv.suite().trial().get_inst('osmo-hlr'))) binary = inst.child('bin', 'osmo-hlr') if not os.path.isfile(binary): @@ -60,7 +60,7 @@ class OsmoHlr(log.Origin): raise log.Error('hlr.sql missing:', sql_input) self.run_local('create_hlr_db', ('/bin/sh', '-c', 'sqlite3 %r < %r' % (self.db_file, sql_input))) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -71,7 +71,7 @@ class OsmoHlr(log.Origin): '-c', os.path.abspath(self.config_file), '--database', self.db_file), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -79,7 +79,7 @@ class OsmoHlr(log.Origin): 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.testenv.suite().config()) config.overlay(values, dict(hlr=dict(ip_address=self.ip_address))) self.dbg('HLR CONFIG:\n' + pprint.pformat(values)) @@ -106,7 +106,7 @@ class OsmoHlr(log.Origin): def subscriber_add(self, modem, msisdn=None, algo_str=None): if msisdn is None: - msisdn = self.suite_run.resources_pool.next_msisdn(modem) + msisdn = self.testenv.msisdn() modem.set_msisdn(msisdn) subscriber_id = self.next_subscriber_id self.next_subscriber_id += 1 diff --git a/src/osmo_gsm_tester/obj/iperf3.py b/src/osmo_gsm_tester/obj/iperf3.py index b9fdfe8a..ff09f179 100644 --- a/src/osmo_gsm_tester/obj/iperf3.py +++ b/src/osmo_gsm_tester/obj/iperf3.py @@ -52,12 +52,12 @@ class IPerf3Server(log.Origin): LOGFILE = 'iperf3_srv.json' REMOTE_DIR = '/tmp' - def __init__(self, suite_run, ip_address): + def __init__(self, testenv, ip_address): super().__init__(log.C_RUN, 'iperf3-srv_%s' % ip_address.get('addr')) self.run_dir = None self.process = None self._run_node = None - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address self._port = IPerf3Server.DEFAULT_SRV_PORT self.log_file = None @@ -84,7 +84,7 @@ class IPerf3Server(log.Origin): def start(self): self.log('Starting iperf3-srv') self.log_copied = False - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.log_file = self.run_dir.new_file(IPerf3Server.LOGFILE) if self.runs_locally(): self.start_locally() @@ -105,11 +105,11 @@ class IPerf3Server(log.Origin): args += ('--logfile', self.remote_log_file,) self.process = self.rem_host.RemoteProcess(self.name(), args) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def start_locally(self): - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.addr()) args = ('iperf3', '-s', '-B', self.addr(), @@ -118,7 +118,7 @@ class IPerf3Server(log.Origin): args += ('--logfile', os.path.abspath(self.log_file),) self.process = process.Process(self.name(), self.run_dir, args, env={}) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def set_run_node(self, run_node): @@ -128,7 +128,7 @@ class IPerf3Server(log.Origin): self._port = port def stop(self): - self.suite_run.stop_process(self.process) + self.testenv.stop_process(self.process) def get_results(self): if self.logfile_supported: @@ -153,20 +153,20 @@ class IPerf3Server(log.Origin): return not self.process.terminated() def create_client(self): - return IPerf3Client(self.suite_run, self) + return IPerf3Client(self.testenv, self) class IPerf3Client(log.Origin): REMOTE_DIR = '/tmp' LOGFILE = 'iperf3_cli.json' - def __init__(self, suite_run, iperf3srv): + def __init__(self, testenv, iperf3srv): super().__init__(log.C_RUN, 'iperf3-cli_%s' % iperf3srv.addr()) self.run_dir = None self.process = None self._run_node = None self.server = iperf3srv - self.suite_run = suite_run + self.testenv = testenv self.log_file = None self.rem_host = None self.remote_log_file = None @@ -180,7 +180,7 @@ class IPerf3Client(log.Origin): def prepare_test_proc(self, downlink=False, netns=None, time_sec=None): if time_sec is None: values = config.get_defaults('iperf3cli') - config.overlay(values, self.suite_run.config().get('iperf3cli', {})) + config.overlay(values, self.testenv.suite().config().get('iperf3cli', {})) time_sec_str = values.get('time', time_sec) # Convert duration to seconds @@ -195,7 +195,7 @@ class IPerf3Client(log.Origin): self.log('Preparing iperf3-client connecting to %s:%d (time=%ds)' % (self.server.addr(), self.server.port(), time_sec)) self.log_copied = False - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.log_file = self.run_dir.new_file(IPerf3Client.LOGFILE) if self.runs_locally(): return self.prepare_test_proc_locally(downlink, netns, time_sec) @@ -226,7 +226,7 @@ class IPerf3Client(log.Origin): return self.process def prepare_test_proc_locally(self, downlink, netns, time_sec): - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.server.addr(), netns) popen_args = ('iperf3', '-c', self.server.addr(), diff --git a/src/osmo_gsm_tester/obj/mgcpgw_osmo.py b/src/osmo_gsm_tester/obj/mgcpgw_osmo.py index d31f4399..3afa3f14 100644 --- a/src/osmo_gsm_tester/obj/mgcpgw_osmo.py +++ b/src/osmo_gsm_tester/obj/mgcpgw_osmo.py @@ -25,21 +25,21 @@ from . import pcap_recorder class OsmoMgcpgw(log.Origin): - def __init__(self, suite_run, ip_address, bts_ip): + def __init__(self, testenv, ip_address, bts_ip): super().__init__(log.C_RUN, 'osmo-mgcpgw_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None - self.suite_run = suite_run + self.testenv = testenv 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.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().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.testenv.suite().trial().get_inst('osmo-nitb'))) binary = inst.child('bin', 'osmo-bsc_mgcp') if not os.path.isfile(binary): raise RuntimeError('Binary missing: %r' % binary) @@ -47,7 +47,7 @@ class OsmoMgcpgw(log.Origin): if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -57,7 +57,7 @@ class OsmoMgcpgw(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -65,7 +65,7 @@ class OsmoMgcpgw(log.Origin): 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.testenv.suite().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/obj/mgw_osmo.py b/src/osmo_gsm_tester/obj/mgw_osmo.py index 3798b2da..70572a1e 100644 --- a/src/osmo_gsm_tester/obj/mgw_osmo.py +++ b/src/osmo_gsm_tester/obj/mgw_osmo.py @@ -25,20 +25,20 @@ from . import pcap_recorder class OsmoMgw(log.Origin): - def __init__(self, suite_run, ip_address): + def __init__(self, testenv, ip_address): super().__init__(log.C_RUN, 'osmo-mgw_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address self.use_osmux = "off" def start(self): self.log('Starting osmo-mgw') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-mgw'))) + inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-mgw'))) binary = inst.child('bin', 'osmo-mgw') if not os.path.isfile(binary): raise RuntimeError('Binary missing: %r' % binary) @@ -46,7 +46,7 @@ class OsmoMgw(log.Origin): if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -56,7 +56,7 @@ class OsmoMgw(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -64,7 +64,7 @@ class OsmoMgw(log.Origin): self.dbg(config_file=self.config_file) values = dict(mgw=config.get_defaults('mgw')) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'mgw': { 'ip_address': self.ip_address, 'use_osmux': self.use_osmux diff --git a/src/osmo_gsm_tester/obj/ms.py b/src/osmo_gsm_tester/obj/ms.py index a30a9c74..2774debe 100644 --- a/src/osmo_gsm_tester/obj/ms.py +++ b/src/osmo_gsm_tester/obj/ms.py @@ -54,7 +54,7 @@ class MS(log.Origin, metaclass=ABCMeta): """Cleans up resources allocated.""" pass - def get_instance_by_type(suite_run, conf): + def get_instance_by_type(testenv, conf): """Allocate a MS child class based on type. Opts are passed to the newly created object.""" ms_type = conf.get('type') if ms_type is None: @@ -75,7 +75,7 @@ class MS(log.Origin, metaclass=ABCMeta): ms_class = AmarisoftUE else: raise log.Error('MS type not supported:', ms_type) - return ms_class(suite_run, conf) + return ms_class(testenv, conf) ################### # PUBLIC (test API included) diff --git a/src/osmo_gsm_tester/obj/ms_amarisoft.py b/src/osmo_gsm_tester/obj/ms_amarisoft.py index 46a92dc8..451bbd0f 100644 --- a/src/osmo_gsm_tester/obj/ms_amarisoft.py +++ b/src/osmo_gsm_tester/obj/ms_amarisoft.py @@ -78,7 +78,7 @@ class AmarisoftUE(MS): LOGFILE = 'lteue.log' IFUPFILE = 'ue-ifup' - def __init__(self, suite_run, conf): + def __init__(self, testenv, conf): self._addr = conf.get('addr', None) if self._addr is None: raise log.Error('addr not set') @@ -98,7 +98,7 @@ class AmarisoftUE(MS): self.remote_config_rf_file = None self.remote_log_file = None self.remote_ifup_file = None - self.suite_run = suite_run + self.testenv = testenv self.remote_user = conf.get('remote_user', None) if not rf_type_valid(conf.get('rf_dev_type', None)): raise log.Error('Invalid rf_dev_type=%s' % conf.get('rf_dev_type', None)) @@ -107,7 +107,7 @@ class AmarisoftUE(MS): if self._bin_prefix is None: self._bin_prefix = os.getenv('AMARISOFT_PATH_UE', None) if self._bin_prefix == None: - self._bin_prefix = self.suite_run.trial.get_inst('amarisoftue') + self._bin_prefix = self.testenv.suite().trial().get_inst('amarisoftue') return self._bin_prefix def cleanup(self): @@ -128,12 +128,12 @@ class AmarisoftUE(MS): return "amarisoftue1" def stop(self): - self.suite_run.stop_process(self.process) + self.testenv.stop_process(self.process) def connect(self, enb): self.log('Starting amarisoftue') self.enb = enb - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() if self.setup_runs_locally(): self.start_locally() @@ -161,7 +161,7 @@ class AmarisoftUE(MS): args = (remote_binary, self.remote_config_file) self.process = self.rem_host.RemoteProcess(AmarisoftUE.BINFILE, args) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def start_locally(self): @@ -182,7 +182,7 @@ class AmarisoftUE(MS): args = (binary, os.path.abspath(self.config_file)) self.dbg(run_dir=self.run_dir, binary=binary, env=env) self.process = process.Process(self.name(), self.run_dir, args, env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def gen_conf_file(self, path, filename, values): @@ -232,8 +232,8 @@ class AmarisoftUE(MS): values = dict(ue=config.get_defaults('amarisoft')) config.overlay(values, dict(ue=config.get_defaults('amarisoftue'))) - config.overlay(values, dict(ue=self.suite_run.config().get('amarisoft', {}))) - config.overlay(values, dict(ue=self.suite_run.config().get('modem', {}))) + config.overlay(values, dict(ue=self.testenv.suite().config().get('amarisoft', {}))) + config.overlay(values, dict(ue=self.testenv.suite().config().get('modem', {}))) config.overlay(values, dict(ue=self._conf)) config.overlay(values, dict(ue=dict(num_antennas = self.enb.num_ports()))) diff --git a/src/osmo_gsm_tester/obj/ms_driver.py b/src/osmo_gsm_tester/obj/ms_driver.py index 2c7bb8b7..c7c1c249 100644 --- a/src/osmo_gsm_tester/obj/ms_driver.py +++ b/src/osmo_gsm_tester/obj/ms_driver.py @@ -30,9 +30,9 @@ import tempfile class MsDriver(log.Origin): - def __init__(self, suite_run): + def __init__(self, testenv): super().__init__(log.C_RUN, 'ms-driver') - self._suite_run = suite_run + self._testenv = testenv # TODO: take config out of the test scenario self._time_start = timedelta(seconds=60) @@ -67,7 +67,7 @@ class MsDriver(log.Origin): """ # Get the base directory for the virtphy/mobile application - inst = util.Dir(os.path.abspath(self._suite_run.trial.get_inst('osmocom-bb'))) + inst = util.Dir(os.path.abspath(self._testenv.trial.get_inst('osmocom-bb'))) # Assume these are dynamically linked and verify there is a lib dir. lib = inst.child('lib') @@ -117,7 +117,7 @@ class MsDriver(log.Origin): self._starter = MobileTestStarter("mass", options, self._cdf, self._ev_server, util.Dir(self.event_server_sk_tmp_dir), - self._results, suite_run=self._suite_run) + self._results, testenv=self._testenv) for sub in self._subscribers: self._starter.subscriber_add(sub) diff --git a/src/osmo_gsm_tester/obj/ms_ofono.py b/src/osmo_gsm_tester/obj/ms_ofono.py index a79f8fbf..e03bab89 100644 --- a/src/osmo_gsm_tester/obj/ms_ofono.py +++ b/src/osmo_gsm_tester/obj/ms_ofono.py @@ -361,7 +361,7 @@ class Modem(MS): CTX_PROT_IPv6 = 'ipv6' CTX_PROT_IPv46 = 'dual' - def __init__(self, suite_run, conf): + def __init__(self, testenv, conf): self.syspath = conf.get('path') self.dbuspath = get_dbuspath_from_syspath(self.syspath) super().__init__(self.dbuspath, conf) @@ -369,7 +369,7 @@ class Modem(MS): self._ki = None self._imsi = None self._apn_ipaddr = None - self.run_dir = util.Dir(suite_run.get_test_run_dir().new_dir(self.name().strip('/'))) + self.run_dir = util.Dir(testenv.suite().get_run_dir().new_dir(self.name().strip('/'))) self.sms_received_list = [] self.dbus = ModemDbusInteraction(self.dbuspath) self.register_attempts = 0 diff --git a/src/osmo_gsm_tester/obj/ms_srs.py b/src/osmo_gsm_tester/obj/ms_srs.py index 7d08b66f..e5427f09 100644 --- a/src/osmo_gsm_tester/obj/ms_srs.py +++ b/src/osmo_gsm_tester/obj/ms_srs.py @@ -77,7 +77,7 @@ class srsUE(MS): LOGFILE = 'srsue.log' METRICSFILE = 'srsue_metrics.csv' - def __init__(self, suite_run, conf): + def __init__(self, testenv, conf): self._addr = conf.get('addr', None) if self._addr is None: raise log.Error('addr not set') @@ -97,7 +97,7 @@ class srsUE(MS): self.remote_metrics_file = None self.enable_pcap = False self.num_carriers = 1 - self.suite_run = suite_run + self.testenv = testenv self.remote_user = conf.get('remote_user', None) self._additional_args = [] if not rf_type_valid(conf.get('rf_dev_type', None)): @@ -132,12 +132,12 @@ class srsUE(MS): return "srsue1" def stop(self): - self.suite_run.stop_process(self.process) + self.testenv.stop_process(self.process) def connect(self, enb): self.log('Starting srsue') self.enb = enb - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() if self.setup_runs_locally(): self.start_locally() @@ -170,7 +170,7 @@ class srsUE(MS): self.process = self.rem_host.RemoteProcess(srsUE.BINFILE, args) #self.process = self.rem_host.RemoteProcessFixIgnoreSIGHUP(srsUE.BINFILE, remote_run_dir, args, remote_lib) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def start_locally(self): @@ -194,11 +194,11 @@ class srsUE(MS): args += tuple(self._additional_args) self.process = process.Process(self.name(), self.run_dir, args, env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('srslte'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('srslte'))) if not os.path.isdir(self.inst.child('lib')): raise log.Error('No lib/ in', self.inst) if not self.inst.isfile('bin', srsUE.BINFILE): @@ -220,7 +220,7 @@ class srsUE(MS): self.remote_metrics_file = remote_run_dir.child(srsUE.METRICSFILE) values = dict(ue=config.get_defaults('srsue')) - config.overlay(values, dict(ue=self.suite_run.config().get('modem', {}))) + config.overlay(values, dict(ue=self.testenv.suite().config().get('modem', {}))) config.overlay(values, dict(ue=self._conf)) config.overlay(values, dict(ue=dict(num_antennas = self.enb.num_ports()))) diff --git a/src/osmo_gsm_tester/obj/msc_osmo.py b/src/osmo_gsm_tester/obj/msc_osmo.py index 048934ea..162614c6 100644 --- a/src/osmo_gsm_tester/obj/msc_osmo.py +++ b/src/osmo_gsm_tester/obj/msc_osmo.py @@ -32,7 +32,7 @@ def on_register_schemas(): class OsmoMsc(log.Origin): - def __init__(self, suite_run, hlr, mgw, stp, ip_address): + def __init__(self, testenv, hlr, mgw, stp, ip_address): super().__init__(log.C_RUN, 'osmo-msc_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None @@ -41,7 +41,7 @@ class OsmoMsc(log.Origin): self.encryption = None self.authentication = None self.use_osmux = "off" - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address self.hlr = hlr self.mgw = mgw @@ -50,9 +50,9 @@ class OsmoMsc(log.Origin): def start(self): self.log('Starting osmo-msc') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().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.testenv.suite().trial().get_inst('osmo-msc'))) binary = inst.child('bin', 'osmo-msc') if not os.path.isfile(binary): raise RuntimeError('Binary missing: %r' % binary) @@ -60,7 +60,7 @@ class OsmoMsc(log.Origin): if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -70,7 +70,7 @@ class OsmoMsc(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -78,7 +78,7 @@ class OsmoMsc(log.Origin): 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.testenv.suite().config()) config.overlay(values, dict(msc=dict(ip_address=self.ip_address))) config.overlay(values, self.mgw.conf_for_client()) config.overlay(values, self.hlr.conf_for_client()) diff --git a/src/osmo_gsm_tester/obj/nitb_osmo.py b/src/osmo_gsm_tester/obj/nitb_osmo.py index 64db4257..88ff721c 100644 --- a/src/osmo_gsm_tester/obj/nitb_osmo.py +++ b/src/osmo_gsm_tester/obj/nitb_osmo.py @@ -26,22 +26,22 @@ from . import osmo_ctrl, pcap_recorder, smsc class OsmoNitb(log.Origin): - def __init__(self, suite_run, ip_address): + def __init__(self, testenv, ip_address): super().__init__(log.C_RUN, 'osmo-nitb_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None self.encryption = None - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address self.bts = [] self.smsc = smsc.Smsc((ip_address.get('addr'), 2775)) def start(self): self.log('Starting osmo-nitb') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().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.testenv.suite().trial().get_inst('osmo-nitb'))) binary = inst.child('bin', 'osmo-nitb') if not os.path.isfile(binary): raise RuntimeError('Binary missing: %r' % binary) @@ -49,7 +49,7 @@ class OsmoNitb(log.Origin): if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -59,7 +59,7 @@ class OsmoNitb(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -67,7 +67,7 @@ class OsmoNitb(log.Origin): 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.testenv.suite().config()) config.overlay(values, dict(nitb=dict(ip_address=self.ip_address))) bts_list = [] @@ -120,7 +120,7 @@ class OsmoNitb(log.Origin): def subscriber_add(self, modem, msisdn=None, algo=None): if msisdn is None: - msisdn = self.suite_run.resources_pool.next_msisdn(modem) + msisdn = self.testenv.msisdn() modem.set_msisdn(msisdn) if not algo: diff --git a/src/osmo_gsm_tester/obj/osmocon.py b/src/osmo_gsm_tester/obj/osmocon.py index 6f6ac2a0..5d1e5aec 100644 --- a/src/osmo_gsm_tester/obj/osmocon.py +++ b/src/osmo_gsm_tester/obj/osmocon.py @@ -35,7 +35,7 @@ class Osmocon(log.Origin): FIRMWARE_FILE="opt/osmocom-bb/target/firmware/board/compal_e88/layer1.compalram.bin" - def __init__(self, suite_run, conf): + def __init__(self, testenv, conf): serial_device = conf.get('serial_device') if serial_device is None: raise log.Error('osmocon_phone contains no attr "serial_device"') @@ -43,7 +43,7 @@ class Osmocon(log.Origin): super().__init__(log.C_RUN, 'osmocon_%s' % os.path.basename(self.serial_device)) self.run_dir = None self.process = None - self.suite_run = suite_run + self.testenv = testenv self.conf = conf self.sk_tmp_dir = tempfile.mkdtemp('', 'ogtosmoconsk') if len(self.l2_socket_path().encode()) > 107: @@ -62,9 +62,9 @@ class Osmocon(log.Origin): # TODO: make sure the pone is powered off before starting osmocon self.log('Starting osmocon') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmocom-bb'))) + inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmocom-bb'))) binary = inst.child('sbin', 'osmocon') if not os.path.isfile(binary): @@ -86,7 +86,7 @@ class Osmocon(log.Origin): '-l', self.loader_socket_path(), firmware_path), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() self.log('Waiting for osmocon to be up and running') MainLoop.wait(self, os.path.exists, self.l2_socket_path()) diff --git a/src/osmo_gsm_tester/obj/pcap_recorder.py b/src/osmo_gsm_tester/obj/pcap_recorder.py index eb914205..30a3510a 100644 --- a/src/osmo_gsm_tester/obj/pcap_recorder.py +++ b/src/osmo_gsm_tester/obj/pcap_recorder.py @@ -23,13 +23,13 @@ from ..core import log, process class PcapRecorder(log.Origin): - def __init__(self, suite_run, run_dir, iface=None, filters='', netns=None): + def __init__(self, testenv, run_dir, iface=None, filters='', netns=None): 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.testenv = testenv self.run_dir = run_dir self.netns = netns self.start() @@ -45,7 +45,7 @@ class PcapRecorder(log.Origin): self.process = process.NetNSProcess(self.name(), self.run_dir, self.netns, popen_args) else: self.process = process.Process(self.name(), self.run_dir, popen_args) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def running(self): diff --git a/src/osmo_gsm_tester/obj/pcu.py b/src/osmo_gsm_tester/obj/pcu.py index 6028f064..ed94d492 100644 --- a/src/osmo_gsm_tester/obj/pcu.py +++ b/src/osmo_gsm_tester/obj/pcu.py @@ -27,10 +27,10 @@ class Pcu(log.Origin, metaclass=ABCMeta): # PROTECTED ############## - def __init__(self, suite_run, bts, conf, name): + def __init__(self, testenv, bts, conf, name): """Base constructor. Must be called by subclass.""" super().__init__(log.C_RUN, name) - self.suite_run = suite_run + self.testenv = testenv self.bts = bts self.conf = conf @@ -55,8 +55,8 @@ class Pcu(log.Origin, metaclass=ABCMeta): class PcuDummy(Pcu): """PCU for BTS without proper PCU control""" - def __init__(self, suite_run, bts, conf): - super().__init__(suite_run, bts, conf, 'PcuDummy') + def __init__(self, testenv, bts, conf): + super().__init__(testenv, bts, conf, 'PcuDummy') def start(self, keepalive=False): pass diff --git a/src/osmo_gsm_tester/obj/pcu_oc2g.py b/src/osmo_gsm_tester/obj/pcu_oc2g.py index 4b67441e..cb5e6cb7 100644 --- a/src/osmo_gsm_tester/obj/pcu_oc2g.py +++ b/src/osmo_gsm_tester/obj/pcu_oc2g.py @@ -28,8 +28,8 @@ class OsmoPcuOC2G(pcu.Pcu): PCU_OC2G_BIN = 'osmo-pcu' PCU_OC2G_CFG = 'osmo-pcu-oc2g.cfg' - def __init__(self, suite_run, btsoc2g, conf): - super().__init__(suite_run, btsoc2g, conf, self.PCU_OC2G_BIN) + def __init__(self, testenv, btsoc2g, conf): + super().__init__(testenv, btsoc2g, conf, self.PCU_OC2G_BIN) self.run_dir = None self.bsc = None self.inst = None @@ -39,10 +39,10 @@ class OsmoPcuOC2G(pcu.Pcu): self.remote_user = 'root' def start(self, keepalive=False): - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-pcu-oc2g'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-pcu-oc2g'))) lib = self.inst.child('lib') if not os.path.isdir(lib): raise log.Error('No lib/ in', self.inst) @@ -87,7 +87,7 @@ class OsmoPcuOC2G(pcu.Pcu): def launch_remote(self, name, popen_args, remote_cwd=None, keepalive=False): proc = self._process_remote(name, popen_args, remote_cwd) - self.suite_run.remember_to_stop(proc, keepalive) + self.testenv.remember_to_stop(proc, keepalive) proc.launch() def run_local(self, name, popen_args): @@ -104,7 +104,7 @@ class OsmoPcuOC2G(pcu.Pcu): self.dbg(config_file=self.config_file) values = { 'osmo_pcu_oc2g': config.get_defaults('osmo_pcu_oc2g') } - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_pcu_oc2g': { 'bts_addr': self.bts.remote_addr(), diff --git a/src/osmo_gsm_tester/obj/pcu_osmo.py b/src/osmo_gsm_tester/obj/pcu_osmo.py index 4c79f5a0..86e6bbea 100644 --- a/src/osmo_gsm_tester/obj/pcu_osmo.py +++ b/src/osmo_gsm_tester/obj/pcu_osmo.py @@ -27,18 +27,18 @@ class OsmoPcu(pcu.Pcu): BIN_PCU = 'osmo-pcu' PCU_OSMO_CFG = 'osmo-pcu.cfg' - def __init__(self, suite_run, bts, conf): - super().__init__(suite_run, bts, conf, OsmoPcu.BIN_PCU) + def __init__(self, testenv, bts, conf): + super().__init__(testenv, bts, conf, OsmoPcu.BIN_PCU) self.run_dir = None self.inst = None self.conf = conf self.env = {} def start(self, keepalive=False): - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-pcu'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-pcu'))) lib = self.inst.child('lib') if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % self.inst) @@ -47,7 +47,7 @@ class OsmoPcu(pcu.Pcu): self.launch_process(keepalive, OsmoPcu.BIN_PCU, '-r', '1', '-c', os.path.abspath(self.config_file), '-i', self.bts.bsc.addr()) - self.suite_run.poll() + self.testenv.poll() def launch_process(self, keepalive, binary_name, *args): binary = os.path.abspath(self.inst.child('bin', binary_name)) @@ -57,7 +57,7 @@ class OsmoPcu(pcu.Pcu): proc = process.Process(binary_name, run_dir, (binary,) + args, env=self.env) - self.suite_run.remember_to_stop(proc, keepalive) + self.testenv.remember_to_stop(proc, keepalive) proc.launch() return proc @@ -66,7 +66,7 @@ class OsmoPcu(pcu.Pcu): self.dbg(config_file=self.config_file) values = dict(osmo_pcu=config.get_defaults('osmo_pcu')) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_pcu': { 'bts_addr': self.bts.remote_addr(), diff --git a/src/osmo_gsm_tester/obj/pcu_sysmo.py b/src/osmo_gsm_tester/obj/pcu_sysmo.py index f7c480d7..103ad007 100644 --- a/src/osmo_gsm_tester/obj/pcu_sysmo.py +++ b/src/osmo_gsm_tester/obj/pcu_sysmo.py @@ -28,8 +28,8 @@ class OsmoPcuSysmo(pcu.Pcu): PCU_SYSMO_BIN = 'osmo-pcu' PCU_SYSMO_CFG = 'osmo-pcu-sysmo.cfg' - def __init__(self, suite_run, sysmobts, conf): - super().__init__(suite_run, sysmobts, conf, self.PCU_SYSMO_BIN) + def __init__(self, testenv, sysmobts, conf): + super().__init__(testenv, sysmobts, conf, self.PCU_SYSMO_BIN) self.run_dir = None self.bsc = None self.inst = None @@ -39,10 +39,10 @@ class OsmoPcuSysmo(pcu.Pcu): self.remote_user = 'root' def start(self, keepalive=False): - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-pcu-sysmo'))) + self.inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-pcu-sysmo'))) lib = self.inst.child('lib') if not os.path.isdir(lib): raise log.Error('No lib/ in', self.inst) @@ -87,7 +87,7 @@ class OsmoPcuSysmo(pcu.Pcu): def launch_remote(self, name, popen_args, remote_cwd=None, keepalive=False): proc = self._process_remote(name, popen_args, remote_cwd) - self.suite_run.remember_to_stop(proc, keepalive) + self.testenv.remember_to_stop(proc, keepalive) proc.launch() def run_local(self, name, popen_args): @@ -104,7 +104,7 @@ class OsmoPcuSysmo(pcu.Pcu): self.dbg(config_file=self.config_file) values = { 'osmo_pcu_sysmo': config.get_defaults('osmo_pcu_sysmo') } - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, { 'osmo_pcu_sysmo': { 'bts_addr': self.bts.remote_addr(), diff --git a/src/osmo_gsm_tester/obj/sgsn_osmo.py b/src/osmo_gsm_tester/obj/sgsn_osmo.py index 6824d80d..a7c7adb6 100644 --- a/src/osmo_gsm_tester/obj/sgsn_osmo.py +++ b/src/osmo_gsm_tester/obj/sgsn_osmo.py @@ -25,22 +25,22 @@ from . import pcap_recorder class OsmoSgsn(log.Origin): - def __init__(self, suite_run, hlr, ggsn, ip_address): + def __init__(self, testenv, hlr, ggsn, ip_address): super().__init__(log.C_RUN, 'osmo-sgsn_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None - self.suite_run = suite_run + self.testenv = testenv self.hlr = hlr self.ggsn = ggsn self.ip_address = ip_address def start(self): self.log('Starting osmo-sgsn') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-sgsn'))) + inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-sgsn'))) binary = inst.child('bin', 'osmo-sgsn') if not os.path.isfile(binary): @@ -49,7 +49,7 @@ class OsmoSgsn(log.Origin): if not os.path.isdir(lib): raise log.Error('No lib/ in', inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -59,7 +59,7 @@ class OsmoSgsn(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -67,7 +67,7 @@ class OsmoSgsn(log.Origin): self.dbg(config_file=self.config_file) values = dict(sgsn=config.get_defaults('sgsn')) - config.overlay(values, self.suite_run.config()) + config.overlay(values, self.testenv.suite().config()) config.overlay(values, dict(sgsn=dict(ip_address=self.ip_address))) config.overlay(values, self.hlr.conf_for_client()) config.overlay(values, self.ggsn.conf_for_client()) diff --git a/src/osmo_gsm_tester/obj/stp_osmo.py b/src/osmo_gsm_tester/obj/stp_osmo.py index afb8a042..e8bb4e00 100644 --- a/src/osmo_gsm_tester/obj/stp_osmo.py +++ b/src/osmo_gsm_tester/obj/stp_osmo.py @@ -25,20 +25,20 @@ from . import pcap_recorder class OsmoStp(log.Origin): - def __init__(self, suite_run, ip_address): + def __init__(self, testenv, ip_address): super().__init__(log.C_RUN, 'osmo-stp_%s' % ip_address.get('addr')) self.run_dir = None self.config_file = None self.process = None - self.suite_run = suite_run + self.testenv = testenv self.ip_address = ip_address def start(self): self.log('Starting osmo-stp') - self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name())) self.configure() - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-stp'))) + inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-stp'))) binary = inst.child('bin', 'osmo-stp') if not os.path.isfile(binary): @@ -47,7 +47,7 @@ class OsmoStp(log.Origin): if not os.path.isdir(lib): raise RuntimeError('No lib/ in %r' % inst) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, + pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, 'host %s and port not 22' % self.addr()) env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } @@ -57,7 +57,7 @@ class OsmoStp(log.Origin): (binary, '-c', os.path.abspath(self.config_file)), env=env) - self.suite_run.remember_to_stop(self.process) + self.testenv.remember_to_stop(self.process) self.process.launch() def configure(self): @@ -65,7 +65,7 @@ class OsmoStp(log.Origin): 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.testenv.suite().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/testenv.py b/src/osmo_gsm_tester/testenv.py index aa94f3c9..0e0860d4 100644 --- a/src/osmo_gsm_tester/testenv.py +++ b/src/osmo_gsm_tester/testenv.py @@ -36,7 +36,6 @@ from .obj import enb from .obj import bts from .obj import ms -trial = None suite = None test = None resources = None @@ -59,24 +58,17 @@ class TestEnv(log_module.Origin): super().__init__(log_module.C_TST, test.name()) self.suite_run = suite_run self._test = test - self.trial = suite_run.trial # backward compat with objects - self.resources_pool = suite_run.resource_pool() # backward compat with objects self._processes = [] self.test_import_modules_to_clean_up = [] self.objects_to_clean_up = None MainLoop.register_poll_func(self.poll) + def test(self): + return self._test + def suite(self): return self.suite_run - # backward compat with objects - def get_test_run_dir(self): - return self._test.get_run_dir() - - # backward compat with objects - def config(self): - return self.suite_run.config() - def remember_to_stop(self, process, respawn=False): '''Ask suite to monitor and manage lifecycle of the Process object. If a process managed by suite finishes before cleanup time, the current test @@ -321,9 +313,8 @@ def setup(suite_run, _test): from .core.event_loop import MainLoop from .obj.sms import Sms as Sms_class - global trial, suite, test, resources, log, dbg, err, wait, wait_no_raise, sleep, poll, prompt, Sms, process + global suite, test, resources, log, dbg, err, wait, wait_no_raise, sleep, poll, prompt, Sms, process - trial = suite_run.trial test = _test resources = suite_run.reserved_resources # TODO: remove this global, only used in selftest log = test.log diff --git a/src/osmo_ms_driver/starter.py b/src/osmo_ms_driver/starter.py index 702baf0b..559e392d 100644 --- a/src/osmo_ms_driver/starter.py +++ b/src/osmo_ms_driver/starter.py @@ -52,9 +52,9 @@ class OsmoVirtPhy(Launcher): def phy_filename(self): return self._phy_filename - def start(self, loop, suite_run=None): - if suite_run is not None: # overwrite run_dir to store files if run from inside osmo-gsm-tester: - self.run_dir = util.Dir(suite_run.get_test_run_dir().new_dir(self.name())) + def start(self, loop, testenv=None): + if testenv is not None: # overwrite run_dir to store files if run from inside osmo-gsm-tester: + self.run_dir = util.Dir(testenv.suite().get_run_dir().new_dir(self.name())) if len(self._phy_filename.encode()) > 107: raise log.Error('Path for unix socket is longer than max allowed len for unix socket path (107):', self._phy_filename) @@ -62,8 +62,8 @@ class OsmoVirtPhy(Launcher): args = [self._binary, "--l1ctl-sock=" + self._phy_filename] self._vphy_proc = process.Process(self.name(), self.run_dir, args, env=self._env) - if suite_run is not None: - suite_run.remember_to_stop(self._vphy_proc) + if testenv is not None: + testenv.remember_to_stop(self._vphy_proc) self._vphy_proc.launch() def verify_ready(self): @@ -134,9 +134,9 @@ class OsmoMobile(Launcher): w.write(mob_vty) return mob_cfg_file - def start(self, loop, suite_run=None): - if suite_run is not None: # overwrite run_dir to store files if run from inside osmo-gsm-tester: - self.run_dir = util.Dir(suite_run.get_test_run_dir().new_dir(self.name())) + def start(self, loop, testenv=None): + if testenv is not None: # overwrite run_dir to store files if run from inside osmo-gsm-tester: + self.run_dir = util.Dir(testenv.suite().get_run_dir().new_dir(self.name())) lua_filename = self.write_lua_cfg() mob_filename = self.write_mob_cfg(lua_filename, self._phy_filename) @@ -145,8 +145,8 @@ class OsmoMobile(Launcher): args = [self._binary, "-c", mob_filename] self._omob_proc = process.Process(self.name(), self.run_dir, args, env=self._env) - if suite_run is not None: - suite_run.remember_to_stop(self._omob_proc) + if testenv is not None: + testenv.remember_to_stop(self._omob_proc) self._omob_proc.launch() def terminate(self): @@ -168,11 +168,11 @@ class MobileTestStarter(log.Origin): TEMPLATE_CFG = "osmo-mobile.cfg" def __init__(self, name, options, cdf_function, - event_server, tmp_dir, results, suite_run=None): + event_server, tmp_dir, results, testenv=None): super().__init__(log.C_RUN, name) self._binary_options = options self._cdf = cdf_function - self._suite_run = suite_run + self._testenv = testenv self._tmp_dir = tmp_dir self._event_server = event_server self._results = results @@ -225,7 +225,7 @@ class MobileTestStarter(log.Origin): """ self.log("Pre-launching all virtphy's") for phy in self._phys: - phy.start(loop, self._suite_run) + phy.start(loop, self._testenv) self.log("Checking if sockets are in the filesystem") for phy in self._phys: @@ -257,7 +257,7 @@ class MobileTestStarter(log.Origin): # start pending MS while len(self._started) < self._cdf.current_scaled_value() and len(self._unstarted) > 0: ms = self._unstarted.pop(0) - ms.start(loop, self._suite_run) + ms.start(loop, self._testenv) launch_time = time.clock_gettime(time.CLOCK_MONOTONIC) self._results[ms.name_number()].set_launch_time(launch_time) self._started.append(ms)