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/.
neels gerrit-no-reply at lists.osmocom.orgneels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/21670 ) Change subject: keep Ctrl connections open for bsc, msc and nitb objects ...................................................................... keep Ctrl connections open for bsc, msc and nitb objects The pattern to use 'with' to keep a CTRL connection open adds indents to every test script that wants to avoid multiple reconnections to the CTRL. Instead, keeping a single open connection that is cleaned up on {bsc,msc,nitb} object cleanup ensures that a) the program started up successfully and opened a CTRL port, b) always has a CTRL open without having to worry about it and c) keeps test scripts less complex/indented/crufted. (These are all current users of the OsmoCtrl API.) Change-Id: I53fedbe569c5ccbc4b1a17dafe1f8d1bb8200b24 --- M src/osmo_gsm_tester/obj/bsc_osmo.py M src/osmo_gsm_tester/obj/msc_osmo.py M src/osmo_gsm_tester/obj/nitb_osmo.py M src/osmo_gsm_tester/testenv.py 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/osmo_gsm_tester/obj/bsc_osmo.py b/src/osmo_gsm_tester/obj/bsc_osmo.py index 510063a..877db29 100644 --- a/src/osmo_gsm_tester/obj/bsc_osmo.py +++ b/src/osmo_gsm_tester/obj/bsc_osmo.py @@ -50,6 +50,7 @@ self.mgw = mgw self.stp = stp self.vty = None + self.ctrl = None def start(self): self.log('Starting osmo-bsc') @@ -84,6 +85,9 @@ self.vty = OsmoBscVty(self) self.vty.connect() + self.ctrl = OsmoBscCtrl(self) + self.ctrl.connect() + def configure(self): self.config_file = self.run_dir.new_file('osmo-bsc.cfg') self.dbg(config_file=self.config_file) @@ -149,10 +153,8 @@ # over this list, we have a 1:1 match in indexes. return self.bts.index(bts) - def bts_is_connected(self, bts, use_ctrl=None): - if use_ctrl is None: - use_ctrl = self.ctrl() - return use_ctrl.bts_is_connected(self.bts_num(bts)) + def bts_is_connected(self, bts): + return self.ctrl.bts_is_connected(self.bts_num(bts)) def running(self): return not self.process.terminated() @@ -161,9 +163,9 @@ if self.vty is not None: self.vty.disconnect() self.vty = None - - def ctrl(self): - return OsmoBscCtrl(self) + if self.ctrl is not None: + self.ctrl.disconnect() + self.ctrl = None class OsmoBscCtrl(osmo_ctrl.OsmoCtrl): def __init__(self, bsc, port=4249): diff --git a/src/osmo_gsm_tester/obj/msc_osmo.py b/src/osmo_gsm_tester/obj/msc_osmo.py index 5a7c0ba..550fb87 100644 --- a/src/osmo_gsm_tester/obj/msc_osmo.py +++ b/src/osmo_gsm_tester/obj/msc_osmo.py @@ -49,6 +49,7 @@ self.mgw = mgw self.stp = stp self.smsc = smsc.Smsc((ip_address.get('addr'), 2775)) + self.ctrl = None def start(self): self.log('Starting osmo-msc') @@ -75,6 +76,9 @@ self.testenv.remember_to_stop(self.process) self.process.launch() + self.ctrl = OsmoMscCtrl(self) + self.ctrl.connect() + def configure(self): self.config_file = self.run_dir.new_file('osmo-msc.cfg') self.dbg(config_file=self.config_file) @@ -147,7 +151,7 @@ return all([(imsi in attached) for imsi in imsis]) def imsi_list_attached(self): - return OsmoMscCtrl(self).subscriber_list_active() + return self.ctrl.subscriber_list_active() def set_emergency_call_msisdn(self, msisdn): self.dbg('Setting Emergency Call MSISDN', msisdn=msisdn) @@ -156,6 +160,11 @@ def running(self): return not self.process.terminated() + def cleanup(self): + if self.ctrl is not None: + self.ctrl.disconnect() + self.ctrl = None + class OsmoMscCtrl(osmo_ctrl.OsmoCtrl): def __init__(self, msc, port=4255): diff --git a/src/osmo_gsm_tester/obj/nitb_osmo.py b/src/osmo_gsm_tester/obj/nitb_osmo.py index ea00a75..a978b71 100644 --- a/src/osmo_gsm_tester/obj/nitb_osmo.py +++ b/src/osmo_gsm_tester/obj/nitb_osmo.py @@ -36,6 +36,7 @@ self.ip_address = ip_address self.bts = [] self.smsc = smsc.Smsc((ip_address.get('addr'), 2775)) + self.ctrl = None def start(self): self.log('Starting osmo-nitb') @@ -62,6 +63,9 @@ self.testenv.remember_to_stop(self.process) self.process.launch() + self.ctrl = OsmoNitbCtrl(self) + self.ctrl.connect() + def configure(self): self.config_file = self.run_dir.new_file('osmo-nitb.cfg') self.dbg(config_file=self.config_file) @@ -134,11 +138,11 @@ raise log.Error("Auth algo %r selected and no KI specified" % algo) self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi()) - OsmoNitbCtrl(self).subscriber_add(modem.imsi(), msisdn, modem.ki(), algo) + return self.ctrl.subscriber_add(modem.imsi(), msisdn, modem.ki(), algo) def subscriber_delete(self, modem): self.log('Delete subscriber', imsi=modem.imsi()) - OsmoNitbCtrl(self).subscriber_delete(modem.imsi()) + return self.ctrl.subscriber_delete(modem.imsi()) def subscriber_attached(self, *modems): return self.imsi_attached(*[m.imsi() for m in modems]) @@ -149,14 +153,18 @@ return all([(imsi in attached) for imsi in imsis]) def imsi_list_attached(self): - return OsmoNitbCtrl(self).subscriber_list_active() + return self.ctrl.subscriber_list_active() def bts_is_connected(self, bts): - return OsmoNitbCtrl(self).bts_is_connected(self.bts_num(bts)) + return self.ctrl.bts_is_connected(self.bts_num(bts)) def running(self): return not self.process.terminated() + def cleanup(self): + if self.ctrl is not None: + self.ctrl.disconnect() + self.ctrl = None class OsmoNitbCtrl(osmo_ctrl.OsmoCtrl): def __init__(self, nitb, port=4249): diff --git a/src/osmo_gsm_tester/testenv.py b/src/osmo_gsm_tester/testenv.py index b3db84f..dc7aee0 100644 --- a/src/osmo_gsm_tester/testenv.py +++ b/src/osmo_gsm_tester/testenv.py @@ -194,7 +194,9 @@ from .obj.nitb_osmo import OsmoNitb if ip_address is None: ip_address = self.ip_address() - return OsmoNitb(self, ip_address) + nitb_obj = OsmoNitb(self, ip_address) + self.register_for_cleanup(nitb_obj) + return nitb_obj def hlr(self, ip_address=None): from .obj.hlr_osmo import OsmoHlr @@ -230,7 +232,9 @@ from .obj import msc_osmo if ip_address is None: ip_address = self.ip_address() - return msc_osmo.OsmoMsc(self, hlr, mgcpgw, stp, ip_address) + msc_obj = msc_osmo.OsmoMsc(self, hlr, mgcpgw, stp, ip_address) + self.register_for_cleanup(msc_obj) + return msc_obj def bsc(self, msc, mgw, stp, ip_address=None): from .obj.bsc_osmo import OsmoBsc -- To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/21670 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: I53fedbe569c5ccbc4b1a17dafe1f8d1bb8200b24 Gerrit-Change-Number: 21670 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofmeyr at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201210/c3ca83b4/attachment.htm>