From 9b27a854470c3080fbbb4eefe4785f0f819f083c Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 7 Sep 2017 18:55:58 +0200 Subject: cosmetic: rename 'osmo-mgcpgw', it is inaccurate The current binary is called osmo-bsc_mgcp, while the projected binary to be used in the future will be called osmo-mgw. osmo-mgcpgw is a phantasy name that never existed and never will. Rename the suite.py "public API" to 'mgw', and use 'mgw' as name for osmo-msc.cfg. However, since currently the binary used is still osmo-bsc_mgcp, keep the parts that are specific to this "MGW implementation" called osmo_bsc_mgcp / OsmoBscMgcp. It is for itself 'osmo_bsc_mgcp', and for the MSC called 'mgw'. Hence we can in the future add an osmo-mgw alongside the osmo-bsc_mgcp. Change-Id: I9e2c485f0784c3b76e352fbb528ce17d1900f3d8 --- src/osmo_gsm_tester/osmo_bsc_mgcp.py | 89 ++++++++++++++++++++++ src/osmo_gsm_tester/osmo_mgcpgw.py | 89 ---------------------- src/osmo_gsm_tester/osmo_msc.py | 6 +- src/osmo_gsm_tester/suite.py | 10 +-- .../templates/osmo-bsc_mgcp.cfg.tmpl | 21 +++++ src/osmo_gsm_tester/templates/osmo-mgcpgw.cfg.tmpl | 21 ----- src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl | 2 +- suites/aoip_debug/interactive.py | 6 +- suites/aoip_encryption/register_a5_0_authopt.py | 6 +- suites/aoip_encryption/register_a5_0_authreq.py | 6 +- suites/aoip_encryption/register_a5_1_authreq.py | 6 +- suites/aoip_smpp/esme_connect_policy_acceptall.py | 8 +- suites/aoip_smpp/esme_connect_policy_closed.py | 6 +- suites/aoip_smpp/esme_ms_sms_storeforward.py | 6 +- suites/aoip_smpp/esme_ms_sms_transaction.py | 6 +- suites/aoip_sms/mo_mt_sms.py | 6 +- 16 files changed, 147 insertions(+), 147 deletions(-) create mode 100644 src/osmo_gsm_tester/osmo_bsc_mgcp.py delete mode 100644 src/osmo_gsm_tester/osmo_mgcpgw.py create mode 100644 src/osmo_gsm_tester/templates/osmo-bsc_mgcp.cfg.tmpl delete mode 100644 src/osmo_gsm_tester/templates/osmo-mgcpgw.cfg.tmpl diff --git a/src/osmo_gsm_tester/osmo_bsc_mgcp.py b/src/osmo_gsm_tester/osmo_bsc_mgcp.py new file mode 100644 index 0000000..2da2f4d --- /dev/null +++ b/src/osmo_gsm_tester/osmo_bsc_mgcp.py @@ -0,0 +1,89 @@ +# osmo_gsm_tester: specifics for running an osmo-mgw (osmo-bsc_mgcp) +# +# Copyright (C) 2017 by sysmocom - s.f.m.c. GmbH +# +# Author: Neels Hofmeyr +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import pprint + +from . import log, util, config, template, process, osmo_ctrl, pcap_recorder + +class OsmoBscMgcp(log.Origin): + suite_run = None + ip_address = None + run_dir = None + config_file = None + process = None + + def __init__(self, suite_run, ip_address, bts_ip): + super().__init__(log.C_RUN, 'osmo-bsc_mgcp_%s' % ip_address.get('addr')) + self.suite_run = suite_run + self.ip_address = ip_address + # hack: so far osmo-bsc_mgcp needs one specific BTS IP. + self.bts_ip = bts_ip + + def start(self): + self.log('Starting osmo-bsc_mgcp') + self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name())) + self.configure() + inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-mgw'))) + binary = inst.child('bin', 'osmo-bsc_mgcp') + if not os.path.isfile(binary): + raise RuntimeError('Binary missing: %r' % binary) + lib = inst.child('lib') + if not os.path.isdir(lib): + raise RuntimeError('No lib/ in %r' % inst) + + iface = util.ip_to_iface(self.addr()) + pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface, + 'host %s and port not 22' % self.addr()) + + env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } + + self.dbg(run_dir=self.run_dir, binary=binary, env=env) + self.process = process.Process(self.name(), self.run_dir, + (binary, '-c', + os.path.abspath(self.config_file)), + env=env) + self.suite_run.remember_to_stop(self.process) + self.process.launch() + + def configure(self): + self.config_file = self.run_dir.new_file('osmo-bsc_mgcp.cfg') + self.dbg(config_file=self.config_file) + + values = dict(mgw=config.get_defaults('osmo_bsc_mgcp')) + config.overlay(values, self.suite_run.config()) + config.overlay(values, dict(osmo_bsc_mgcp=dict(ip_address=self.ip_address, bts_ip=self.bts_ip))) + + self.dbg('MGCPGW CONFIG:\n' + pprint.pformat(values)) + + with open(self.config_file, 'w') as f: + r = template.render('osmo-bsc_mgcp.cfg', values) + self.dbg(r) + f.write(r) + + def addr(self): + return self.ip_address.get('addr') + + def conf_for_msc(self): + return dict(mgw=dict(ip_address=self.ip_address)) + + def running(self): + return not self.process.terminated() + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/osmo_mgcpgw.py b/src/osmo_gsm_tester/osmo_mgcpgw.py deleted file mode 100644 index 93c3a7c..0000000 --- a/src/osmo_gsm_tester/osmo_mgcpgw.py +++ /dev/null @@ -1,89 +0,0 @@ -# osmo_gsm_tester: specifics for running an osmo-mgcp-gw (osmo-bsc_mgcp) -# -# Copyright (C) 2017 by sysmocom - s.f.m.c. GmbH -# -# Author: Neels Hofmeyr -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import os -import pprint - -from . import log, util, config, template, process, osmo_ctrl, pcap_recorder - -class OsmoMgcpgw(log.Origin): - suite_run = None - ip_address = None - run_dir = None - config_file = None - process = None - - def __init__(self, suite_run, ip_address, bts_ip): - super().__init__(log.C_RUN, 'osmo-mgcpgw_%s' % ip_address.get('addr')) - self.suite_run = suite_run - 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.configure() - inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-mgw'))) - binary = inst.child('bin', 'osmo-bsc_mgcp') - if not os.path.isfile(binary): - raise RuntimeError('Binary missing: %r' % binary) - lib = inst.child('lib') - if not os.path.isdir(lib): - raise RuntimeError('No lib/ in %r' % inst) - - iface = util.ip_to_iface(self.addr()) - pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface, - 'host %s and port not 22' % self.addr()) - - env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } - - self.dbg(run_dir=self.run_dir, binary=binary, env=env) - self.process = process.Process(self.name(), self.run_dir, - (binary, '-c', - os.path.abspath(self.config_file)), - env=env) - self.suite_run.remember_to_stop(self.process) - self.process.launch() - - def configure(self): - self.config_file = self.run_dir.new_file('osmo-mgcpgw.cfg') - self.dbg(config_file=self.config_file) - - values = dict(mgcpgw=config.get_defaults('mgcpgw')) - config.overlay(values, self.suite_run.config()) - config.overlay(values, dict(mgcpgw=dict(ip_address=self.ip_address, bts_ip=self.bts_ip))) - - self.dbg('MGCPGW CONFIG:\n' + pprint.pformat(values)) - - with open(self.config_file, 'w') as f: - r = template.render('osmo-mgcpgw.cfg', values) - self.dbg(r) - f.write(r) - - def addr(self): - return self.ip_address.get('addr') - - def conf_for_msc(self): - return dict(mgcpgw=dict(ip_address=self.ip_address)) - - def running(self): - return not self.process.terminated() - -# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/osmo_msc.py b/src/osmo_gsm_tester/osmo_msc.py index 67234e3..a5e8585 100644 --- a/src/osmo_gsm_tester/osmo_msc.py +++ b/src/osmo_gsm_tester/osmo_msc.py @@ -34,12 +34,12 @@ class OsmoMsc(log.Origin): encryption = None authentication = None - def __init__(self, suite_run, hlr, mgcpgw, ip_address): + def __init__(self, suite_run, hlr, mgw, ip_address): super().__init__(log.C_RUN, 'osmo-msc_%s' % ip_address.get('addr')) self.suite_run = suite_run self.ip_address = ip_address self.hlr = hlr - self.mgcpgw = mgcpgw + self.mgw = mgw self.smsc = smsc.Smsc((ip_address.get('addr'), 2775)) def start(self): @@ -75,7 +75,7 @@ class OsmoMsc(log.Origin): values = dict(msc=config.get_defaults('msc')) config.overlay(values, self.suite_run.config()) config.overlay(values, dict(msc=dict(ip_address=self.ip_address))) - config.overlay(values, self.mgcpgw.conf_for_msc()) + config.overlay(values, self.mgw.conf_for_msc()) config.overlay(values, self.hlr.conf_for_msc()) config.overlay(values, self.smsc.get_config()) diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py index 28bdd69..e9505f1 100644 --- a/src/osmo_gsm_tester/suite.py +++ b/src/osmo_gsm_tester/suite.py @@ -25,7 +25,7 @@ import traceback import pprint from . import config, log, template, util, resource, schema, ofono_client, event_loop, esme, sms from . import osmo_nitb -from . import osmo_hlr, osmo_mgcpgw, osmo_msc, osmo_bsc, osmo_stp +from . import osmo_hlr, osmo_bsc_mgcp, osmo_msc, osmo_bsc, osmo_stp from . import test class Timeout(Exception): @@ -322,15 +322,15 @@ class SuiteRun(log.Origin): ip_address = self.ip_address() return osmo_hlr.OsmoHlr(self, ip_address) - def mgcpgw(self, ip_address=None, bts_ip=None): + def mgw(self, ip_address=None, bts_ip=None): if ip_address is None: ip_address = self.ip_address() - return osmo_mgcpgw.OsmoMgcpgw(self, ip_address, bts_ip) + return osmo_bsc_mgcp.OsmoBscMgcp(self, ip_address, bts_ip) - def msc(self, hlr, mgcpgw, ip_address=None): + def msc(self, hlr, mgw, ip_address=None): if ip_address is None: ip_address = self.ip_address() - return osmo_msc.OsmoMsc(self, hlr, mgcpgw, ip_address) + return osmo_msc.OsmoMsc(self, hlr, mgw, ip_address) def bsc(self, msc, ip_address=None): if ip_address is None: diff --git a/src/osmo_gsm_tester/templates/osmo-bsc_mgcp.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bsc_mgcp.cfg.tmpl new file mode 100644 index 0000000..7ef192b --- /dev/null +++ b/src/osmo_gsm_tester/templates/osmo-bsc_mgcp.cfg.tmpl @@ -0,0 +1,21 @@ +! Configuration rendered by osmo-gsm-tester +log stderr + logging filter all 1 + logging color 1 + logging print category 1 + logging print extended-timestamp 1 + logging level all debug +line vty + no login + bind ${osmo_bsc_mgcp.ip_address.addr} +mgcp + local ip ${osmo_bsc_mgcp.ip_address.addr} + bts ip ${osmo_bsc_mgcp.bts_ip} + bind ip ${osmo_bsc_mgcp.ip_address.addr} + bind port 2427 + rtp base 4000 + rtp force-ptime 20 + sdp audio payload number 98 + sdp audio payload name AMR/8000 + number endpoints 31 + no rtcp-omit diff --git a/src/osmo_gsm_tester/templates/osmo-mgcpgw.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-mgcpgw.cfg.tmpl deleted file mode 100644 index 28a3798..0000000 --- a/src/osmo_gsm_tester/templates/osmo-mgcpgw.cfg.tmpl +++ /dev/null @@ -1,21 +0,0 @@ -! Configuration rendered by osmo-gsm-tester -log stderr - logging filter all 1 - logging color 1 - logging print category 1 - logging print extended-timestamp 1 - logging level all debug -line vty - no login - bind ${mgcpgw.ip_address.addr} -mgcp - local ip ${mgcpgw.ip_address.addr} - bts ip ${mgcpgw.bts_ip} - bind ip ${mgcpgw.ip_address.addr} - bind port 2427 - rtp base 4000 - rtp force-ptime 20 - sdp audio payload number 98 - sdp audio payload name AMR/8000 - number endpoints 31 - no rtcp-omit diff --git a/src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl index 6851ea9..58d9333 100644 --- a/src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl +++ b/src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl @@ -20,7 +20,7 @@ network cs7 instance 0 point-code 0.0.1 msc - mgcpgw remote-ip ${mgcpgw.ip_address.addr} + mgcpgw remote-ip ${mgw.ip_address.addr} assign-tmsi cs7-instance-iu 0 cs7-instance-a 0 diff --git a/suites/aoip_debug/interactive.py b/suites/aoip_debug/interactive.py index d596b68..21d07b9 100755 --- a/suites/aoip_debug/interactive.py +++ b/suites/aoip_debug/interactive.py @@ -2,8 +2,8 @@ from osmo_gsm_tester.test import * hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() modems = suite.modems(int(prompt('How many modems?'))) @@ -11,7 +11,7 @@ modems = suite.modems(int(prompt('How many modems?'))) hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.bts_add(bts) bsc.start() diff --git a/suites/aoip_encryption/register_a5_0_authopt.py b/suites/aoip_encryption/register_a5_0_authopt.py index 0224ee0..dafdc54 100755 --- a/suites/aoip_encryption/register_a5_0_authopt.py +++ b/suites/aoip_encryption/register_a5_0_authopt.py @@ -3,8 +3,8 @@ from osmo_gsm_tester.test import * hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() ms = suite.modem() @@ -16,7 +16,7 @@ bsc.set_encryption('a5_0') hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.bts_add(bts) bsc.start() bts.start() diff --git a/suites/aoip_encryption/register_a5_0_authreq.py b/suites/aoip_encryption/register_a5_0_authreq.py index 114c628..49b8021 100755 --- a/suites/aoip_encryption/register_a5_0_authreq.py +++ b/suites/aoip_encryption/register_a5_0_authreq.py @@ -3,8 +3,8 @@ from osmo_gsm_tester.test import * hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() ms = suite.modem() @@ -16,7 +16,7 @@ bsc.set_encryption('a5_0') hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.bts_add(bts) bsc.start() bts.start() diff --git a/suites/aoip_encryption/register_a5_1_authreq.py b/suites/aoip_encryption/register_a5_1_authreq.py index a84fa3a..21ac1ef 100755 --- a/suites/aoip_encryption/register_a5_1_authreq.py +++ b/suites/aoip_encryption/register_a5_1_authreq.py @@ -3,8 +3,8 @@ from osmo_gsm_tester.test import * hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() ms = suite.modem() @@ -16,7 +16,7 @@ bsc.set_encryption('a5_1') hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.bts_add(bts) bsc.start() bts.start() diff --git a/suites/aoip_smpp/esme_connect_policy_acceptall.py b/suites/aoip_smpp/esme_connect_policy_acceptall.py index 2a954d5..82d4f86 100755 --- a/suites/aoip_smpp/esme_connect_policy_acceptall.py +++ b/suites/aoip_smpp/esme_connect_policy_acceptall.py @@ -7,9 +7,9 @@ from osmo_gsm_tester.test import * hlr = suite.hlr() -bts = suite.bts() # bts not started, only needed for mgcpgw -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +bts = suite.bts() # bts not started, only needed for mgw +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) smsc = msc.smsc esme = suite.esme() @@ -20,7 +20,7 @@ esme.set_smsc(smsc) hlr.start() msc.start() -mgcpgw.start() +mgw.start() # Due to accept-all policy, connect() should work even if we didn't previously # configure the esme in the smsc, no matter the system_id / password we use. diff --git a/suites/aoip_smpp/esme_connect_policy_closed.py b/suites/aoip_smpp/esme_connect_policy_closed.py index 29b25d1..ce07f9c 100755 --- a/suites/aoip_smpp/esme_connect_policy_closed.py +++ b/suites/aoip_smpp/esme_connect_policy_closed.py @@ -13,8 +13,8 @@ SMPP_ESME_RINVSYSID = 0x0000000F hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) smsc = msc.smsc esme = suite.esme() @@ -27,7 +27,7 @@ smsc.esme_add(esme_no_pwd) hlr.start() msc.start() -mgcpgw.start() +mgw.start() log('Test with correct credentials (no password)') esme_no_pwd.connect() diff --git a/suites/aoip_smpp/esme_ms_sms_storeforward.py b/suites/aoip_smpp/esme_ms_sms_storeforward.py index 308ebf3..32dc68a 100755 --- a/suites/aoip_smpp/esme_ms_sms_storeforward.py +++ b/suites/aoip_smpp/esme_ms_sms_storeforward.py @@ -14,8 +14,8 @@ SMPP_ESME_RINVDSTADR = 0x0000000B hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() bsc.bts_add(bts) @@ -27,7 +27,7 @@ msc.smsc.esme_add(esme) hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.start() bts.start() diff --git a/suites/aoip_smpp/esme_ms_sms_transaction.py b/suites/aoip_smpp/esme_ms_sms_transaction.py index 8bcfb6b..cd677fa 100755 --- a/suites/aoip_smpp/esme_ms_sms_transaction.py +++ b/suites/aoip_smpp/esme_ms_sms_transaction.py @@ -12,8 +12,8 @@ SMPP_ESME_RINVDSTADR = 0x0000000B hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() bsc.bts_add(bts) @@ -25,7 +25,7 @@ msc.smsc.esme_add(esme) hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.start() bts.start() diff --git a/suites/aoip_sms/mo_mt_sms.py b/suites/aoip_sms/mo_mt_sms.py index 217d807..3ede47a 100755 --- a/suites/aoip_sms/mo_mt_sms.py +++ b/suites/aoip_sms/mo_mt_sms.py @@ -3,8 +3,8 @@ from osmo_gsm_tester.test import * hlr = suite.hlr() bts = suite.bts() -mgcpgw = suite.mgcpgw(bts_ip=bts.remote_addr()) -msc = suite.msc(hlr, mgcpgw) +mgw = suite.mgw(bts_ip=bts.remote_addr()) +msc = suite.msc(hlr, mgw) bsc = suite.bsc(msc) stp = suite.stp() ms_mo = suite.modem() @@ -13,7 +13,7 @@ ms_mt = suite.modem() hlr.start() stp.start() msc.start() -mgcpgw.start() +mgw.start() bsc.bts_add(bts) bsc.start() -- cgit v1.2.3