diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py index b5262a2b..3077b0fc 100644 --- a/src/osmo_gsm_tester/bts_osmotrx.py +++ b/src/osmo_gsm_tester/bts_osmotrx.py @@ -19,6 +19,7 @@ import os import pprint +import tempfile from . import log, config, util, template, process, event_loop class OsmoBtsTrx(log.Origin): @@ -28,6 +29,7 @@ class OsmoBtsTrx(log.Origin): inst = None env = None trx = None + pcu_sk_tmp_dir = None BIN_BTS_TRX = 'osmo-bts-trx' BIN_PCU = 'osmo-pcu' @@ -39,6 +41,20 @@ class OsmoBtsTrx(log.Origin): self.suite_run = suite_run self.conf = conf self.env = {} + self.pcu_sk_tmp_dir = tempfile.mkdtemp(None, 'ogtpcusk', None) + if len(self.pcu_socket_path().encode()) > 107: + raise log.Error('Path for pcu socket is longer than max allowed len for unix socket path (107):', self.pcu_socket_path()) + + def cleanup(self): + if self.pcu_sk_tmp_dir: + try: + os.remove(self.pcu_socket_path()) + except OSError: + pass + os.rmdir(self.pcu_sk_tmp_dir) + + def pcu_socket_path(self): + return os.path.join(self.pcu_sk_tmp_dir, 'pcu_bts') def remote_addr(self): return self.conf.get('addr') @@ -105,7 +121,7 @@ class OsmoBtsTrx(log.Origin): 'oml_remote_ip': self.bsc.addr(), 'trx_local_ip': self.remote_addr(), 'trx_remote_ip': self.trx_remote_ip(), - 'pcu_socket_path': os.path.join(str(self.run_dir), 'pcu_bts') + 'pcu_socket_path': self.pcu_socket_path(), } }) config.overlay(values, { 'osmo_bts_trx': self.conf }) diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py index f37f88b6..e8ac7c2a 100644 --- a/src/osmo_gsm_tester/bts_sysmo.py +++ b/src/osmo_gsm_tester/bts_sysmo.py @@ -80,6 +80,12 @@ class SysmoBts(log.Origin): '-i', self.bsc.addr()), remote_cwd=remote_run_dir) + def cleanup(self): + pass + + def pcu_socket_path(self): + return os.path.join(SysmoBts.REMOTE_DIR, 'pcu_bts') + def _process_remote(self, name, popen_args, remote_cwd=None): run_dir = self.run_dir.new_dir(name) return process.RemoteProcess(name, run_dir, self.remote_user, self.remote_addr(), remote_cwd, @@ -122,7 +128,7 @@ class SysmoBts(log.Origin): config.overlay(values, { 'osmo_bts_sysmo': { 'oml_remote_ip': self.bsc.addr(), - 'pcu_socket_path': os.path.join(SysmoBts.REMOTE_DIR, 'pcu_bts') + 'pcu_socket_path': self.pcu_socket_path(), } }) config.overlay(values, { 'osmo_bts_sysmo': self.conf }) diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py index 2ac2062e..9b975fd6 100644 --- a/src/osmo_gsm_tester/suite.py +++ b/src/osmo_gsm_tester/suite.py @@ -351,7 +351,9 @@ class SuiteRun(log.Origin): return osmo_stp.OsmoStp(self, ip_address) def bts(self, specifics=None): - return bts_obj(self, self.reserved_resources.get(resource.R_BTS, specifics=specifics)) + bts = bts_obj(self, self.reserved_resources.get(resource.R_BTS, specifics=specifics)) + self.register_for_cleanup(bts) + return bts def modem(self, specifics=None): conf = self.reserved_resources.get(resource.R_MODEM, specifics=specifics)