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/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18045 ) Change subject: Update obj classes in obj/ to use testenv instead of suite_run ...................................................................... Update obj classes in obj/ to use testenv instead of suite_run Change-Id: Idf41243a497de7bc507b9f1cd1b38640f456f815 --- M src/osmo_gsm_tester/core/suite.py M src/osmo_gsm_tester/core/test.py M src/osmo_gsm_tester/obj/bsc_osmo.py M src/osmo_gsm_tester/obj/bts.py M src/osmo_gsm_tester/obj/bts_nanobts.py M src/osmo_gsm_tester/obj/bts_oc2g.py M src/osmo_gsm_tester/obj/bts_octphy.py M src/osmo_gsm_tester/obj/bts_osmo.py M src/osmo_gsm_tester/obj/bts_osmotrx.py M src/osmo_gsm_tester/obj/bts_osmovirtual.py M src/osmo_gsm_tester/obj/bts_sysmo.py M src/osmo_gsm_tester/obj/enb.py M src/osmo_gsm_tester/obj/enb_amarisoft.py M src/osmo_gsm_tester/obj/enb_srs.py M src/osmo_gsm_tester/obj/epc.py M src/osmo_gsm_tester/obj/epc_amarisoft.py M src/osmo_gsm_tester/obj/epc_srs.py M src/osmo_gsm_tester/obj/ggsn_osmo.py M src/osmo_gsm_tester/obj/hlr_osmo.py M src/osmo_gsm_tester/obj/iperf3.py M src/osmo_gsm_tester/obj/mgcpgw_osmo.py M src/osmo_gsm_tester/obj/mgw_osmo.py M src/osmo_gsm_tester/obj/ms.py M src/osmo_gsm_tester/obj/ms_amarisoft.py M src/osmo_gsm_tester/obj/ms_driver.py M src/osmo_gsm_tester/obj/ms_ofono.py M src/osmo_gsm_tester/obj/ms_srs.py M src/osmo_gsm_tester/obj/msc_osmo.py M src/osmo_gsm_tester/obj/nitb_osmo.py M src/osmo_gsm_tester/obj/osmocon.py M src/osmo_gsm_tester/obj/pcap_recorder.py M src/osmo_gsm_tester/obj/pcu.py M src/osmo_gsm_tester/obj/pcu_oc2g.py M src/osmo_gsm_tester/obj/pcu_osmo.py M src/osmo_gsm_tester/obj/pcu_sysmo.py M src/osmo_gsm_tester/obj/sgsn_osmo.py M src/osmo_gsm_tester/obj/stp_osmo.py M src/osmo_gsm_tester/testenv.py M src/osmo_ms_driver/starter.py 39 files changed, 282 insertions(+), 288 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/osmo_gsm_tester/core/suite.py b/src/osmo_gsm_tester/core/suite.py index 0995f8f..1bd6a63 100644 --- a/src/osmo_gsm_tester/core/suite.py +++ b/src/osmo_gsm_tester/core/suite.py @@ -72,13 +72,16 @@ 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 @@ 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 @@ 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 @@ 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 76c9ce9..8ab124b 100644 --- a/src/osmo_gsm_tester/core/test.py +++ b/src/osmo_gsm_tester/core/test.py @@ -58,7 +58,7 @@ 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 046ef94..22b2dad 100644 --- a/src/osmo_gsm_tester/obj/bsc_osmo.py +++ b/src/osmo_gsm_tester/obj/bsc_osmo.py @@ -34,7 +34,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ (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 @@ 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 e23b555..56e5aaa 100644 --- a/src/osmo_gsm_tester/obj/bts.py +++ b/src/osmo_gsm_tester/obj/bts.py @@ -50,7 +50,7 @@ ############## # 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 @@ 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 @@ '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 @@ 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 3e9b035..5c07bda 100644 --- a/src/osmo_gsm_tester/obj/bts_nanobts.py +++ b/src/osmo_gsm_tester/obj/bts_nanobts.py @@ -30,8 +30,8 @@ ############## # 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ BIN_ABISIP_FIND = 'abisip-find' BTS_UNIT_ID_RE = re.compile("Unit_ID='(?P<unit_id>\d+)/\d+/(?P<trx_id>\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 @@ 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 @@ 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 @@ 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 @@ 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 4a59eee..ee86cc3 100644 --- a/src/osmo_gsm_tester/obj/bts_oc2g.py +++ b/src/osmo_gsm_tester/obj/bts_oc2g.py @@ -31,8 +31,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 11570e8..c4d3910 100644 --- a/src/osmo_gsm_tester/obj/bts_octphy.py +++ b/src/osmo_gsm_tester/obj/bts_octphy.py @@ -31,8 +31,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 a182c47..c1a1f5c 100644 --- a/src/osmo_gsm_tester/obj/bts_osmo.py +++ b/src/osmo_gsm_tester/obj/bts_osmo.py @@ -38,8 +38,8 @@ ############## # 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 @@ # 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 @@ 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 9234fc8..42ed3f8 100644 --- a/src/osmo_gsm_tester/obj/bts_osmotrx.py +++ b/src/osmo_gsm_tester/obj/bts_osmotrx.py @@ -50,8 +50,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ ############## # 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 @@ ############## # 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 @@ 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 @@ 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 @@ 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 @@ 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 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 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 495b2a8..b6470c1 100644 --- a/src/osmo_gsm_tester/obj/bts_osmovirtual.py +++ b/src/osmo_gsm_tester/obj/bts_osmovirtual.py @@ -33,9 +33,9 @@ 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 @@ 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 @@ 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 @@ """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 @@ 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 aecf977..8f76ecb 100644 --- a/src/osmo_gsm_tester/obj/bts_sysmo.py +++ b/src/osmo_gsm_tester/obj/bts_sysmo.py @@ -31,8 +31,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 7514604..4848ea4 100644 --- a/src/osmo_gsm_tester/obj/enb.py +++ b/src/osmo_gsm_tester/obj/enb.py @@ -66,7 +66,7 @@ ############## # 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 @@ 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 @@ 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 @@ 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 6f7080a..a534708 100644 --- a/src/osmo_gsm_tester/obj/enb_amarisoft.py +++ b/src/osmo_gsm_tester/obj/enb_amarisoft.py @@ -45,8 +45,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 0816ca6..70f2f35 100644 --- a/src/osmo_gsm_tester/obj/enb_srs.py +++ b/src/osmo_gsm_tester/obj/enb_srs.py @@ -46,8 +46,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 cbca0fb..177e662 100644 --- a/src/osmo_gsm_tester/obj/epc.py +++ b/src/osmo_gsm_tester/obj/epc.py @@ -33,20 +33,20 @@ ############## # 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 @@ '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 @@ 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 8606e57..b5304bf 100644 --- a/src/osmo_gsm_tester/obj/epc_amarisoft.py +++ b/src/osmo_gsm_tester/obj/epc_amarisoft.py @@ -38,8 +38,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 f859df0..c5e762f 100644 --- a/src/osmo_gsm_tester/obj/epc_srs.py +++ b/src/osmo_gsm_tester/obj/epc_srs.py @@ -39,8 +39,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 11745f6..1435fdb 100644 --- a/src/osmo_gsm_tester/obj/ggsn_osmo.py +++ b/src/osmo_gsm_tester/obj/ggsn_osmo.py @@ -25,20 +25,20 @@ 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 @@ 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 @@ (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 @@ 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 93e5fff..79175f6 100644 --- a/src/osmo_gsm_tester/obj/hlr_osmo.py +++ b/src/osmo_gsm_tester/obj/hlr_osmo.py @@ -30,21 +30,21 @@ 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 @@ 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 @@ '-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 @@ 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 @@ 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 b9fdfe8..ff09f17 100644 --- a/src/osmo_gsm_tester/obj/iperf3.py +++ b/src/osmo_gsm_tester/obj/iperf3.py @@ -52,12 +52,12 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 d31f439..3afa3f1 100644 --- a/src/osmo_gsm_tester/obj/mgcpgw_osmo.py +++ b/src/osmo_gsm_tester/obj/mgcpgw_osmo.py @@ -25,21 +25,21 @@ 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 @@ 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 @@ (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 @@ 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 3798b2d..70572a1 100644 --- a/src/osmo_gsm_tester/obj/mgw_osmo.py +++ b/src/osmo_gsm_tester/obj/mgw_osmo.py @@ -25,20 +25,20 @@ 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 @@ 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 @@ (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 @@ 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 a30a9c7..2774deb 100644 --- a/src/osmo_gsm_tester/obj/ms.py +++ b/src/osmo_gsm_tester/obj/ms.py @@ -54,7 +54,7 @@ """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 @@ 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 46a92dc..451bbd0 100644 --- a/src/osmo_gsm_tester/obj/ms_amarisoft.py +++ b/src/osmo_gsm_tester/obj/ms_amarisoft.py @@ -78,7 +78,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 2c7bb8b..c7c1c24 100644 --- a/src/osmo_gsm_tester/obj/ms_driver.py +++ b/src/osmo_gsm_tester/obj/ms_driver.py @@ -30,9 +30,9 @@ 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 @@ """ # 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 @@ 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 a79f8fb..e03bab8 100644 --- a/src/osmo_gsm_tester/obj/ms_ofono.py +++ b/src/osmo_gsm_tester/obj/ms_ofono.py @@ -361,7 +361,7 @@ 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 @@ 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 7d08b66..e5427f0 100644 --- a/src/osmo_gsm_tester/obj/ms_srs.py +++ b/src/osmo_gsm_tester/obj/ms_srs.py @@ -77,7 +77,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 048934e..162614c 100644 --- a/src/osmo_gsm_tester/obj/msc_osmo.py +++ b/src/osmo_gsm_tester/obj/msc_osmo.py @@ -32,7 +32,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ (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 @@ 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 64db425..88ff721 100644 --- a/src/osmo_gsm_tester/obj/nitb_osmo.py +++ b/src/osmo_gsm_tester/obj/nitb_osmo.py @@ -26,22 +26,22 @@ 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 @@ 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 @@ (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 @@ 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 @@ 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 6f6ac2a..5d1e5ae 100644 --- a/src/osmo_gsm_tester/obj/osmocon.py +++ b/src/osmo_gsm_tester/obj/osmocon.py @@ -35,7 +35,7 @@ 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 @@ 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 @@ # 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 @@ '-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 eb91420..30a3510 100644 --- a/src/osmo_gsm_tester/obj/pcap_recorder.py +++ b/src/osmo_gsm_tester/obj/pcap_recorder.py @@ -23,13 +23,13 @@ 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 @@ 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 6028f06..ed94d49 100644 --- a/src/osmo_gsm_tester/obj/pcu.py +++ b/src/osmo_gsm_tester/obj/pcu.py @@ -27,10 +27,10 @@ # 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 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 4b67441..cb5e6cb 100644 --- a/src/osmo_gsm_tester/obj/pcu_oc2g.py +++ b/src/osmo_gsm_tester/obj/pcu_oc2g.py @@ -28,8 +28,8 @@ 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 @@ 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 @@ 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 @@ 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 4c79f5a..86e6bbe 100644 --- a/src/osmo_gsm_tester/obj/pcu_osmo.py +++ b/src/osmo_gsm_tester/obj/pcu_osmo.py @@ -27,18 +27,18 @@ 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 @@ 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 @@ 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 @@ 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 f7c480d..103ad00 100644 --- a/src/osmo_gsm_tester/obj/pcu_sysmo.py +++ b/src/osmo_gsm_tester/obj/pcu_sysmo.py @@ -28,8 +28,8 @@ 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 @@ 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 @@ 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 @@ 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 6824d80..a7c7adb 100644 --- a/src/osmo_gsm_tester/obj/sgsn_osmo.py +++ b/src/osmo_gsm_tester/obj/sgsn_osmo.py @@ -25,22 +25,22 @@ 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 @@ 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 @@ (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 @@ 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 afb8a04..e8bb4e0 100644 --- a/src/osmo_gsm_tester/obj/stp_osmo.py +++ b/src/osmo_gsm_tester/obj/stp_osmo.py @@ -25,20 +25,20 @@ 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 @@ 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 @@ (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 @@ 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 aa94f3c..0e0860d 100644 --- a/src/osmo_gsm_tester/testenv.py +++ b/src/osmo_gsm_tester/testenv.py @@ -36,7 +36,6 @@ from .obj import bts from .obj import ms -trial = None suite = None test = None resources = None @@ -59,24 +58,17 @@ 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 @@ 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 702baf0..559e392 100644 --- a/src/osmo_ms_driver/starter.py +++ b/src/osmo_ms_driver/starter.py @@ -52,9 +52,9 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ """ 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 @@ # 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) -- To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18045 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Change-Id: Idf41243a497de7bc507b9f1cd1b38640f456f815 Gerrit-Change-Number: 18045 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200505/059e2d4d/attachment.htm>