bts_*: Add ready_for_pcu API
This is required to start osmo-pcu after osmo-bts is already setup and
activated. Otherwise osmo-pcu ends after connecting to socket with:
"pcu_l1_if.cpp:416 BTS not available"
Change-Id: I7209589f60bda63094336e417638906be5e273c4
diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py
index bc93a3a..d9ffd6e 100644
--- a/src/osmo_gsm_tester/bts_octphy.py
+++ b/src/osmo_gsm_tester/bts_octphy.py
@@ -32,6 +32,7 @@
values = None
lac = None
cellid = None
+ proc_bts = None
BIN_BTS_OCTPHY = 'osmo-bts-octphy'
@@ -83,10 +84,9 @@
self.log('Applying CAP_NET_RAW capability to', OsmoBtsOctphy.BIN_BTS_OCTPHY)
util.setcap_net_raw(btsoct_path, self.run_dir.new_dir('setcap_net_raw'))
- self.launch_process(OsmoBtsOctphy.BIN_BTS_OCTPHY, '-r', '1',
+ 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.launch_process(OsmoBtsOctphy.BIN_PCU, '-r', '1')
self.suite_run.poll()
def launch_process(self, binary_name, *args):
@@ -168,6 +168,11 @@
self.dbg(conf=values)
return values
+ def ready_for_pcu(self):
+ if not self.proc_bts or not self.proc_bts.is_running:
+ return False
+ return 'BTS is up' in (self.proc_bts.get_stderr() or '')
+
def set_bsc(self, bsc):
self.bsc = bsc
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index a964169..d30c1ee 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -32,6 +32,7 @@
pcu_sk_tmp_dir = None
lac = None
cellid = None
+ proc_bts = None
BIN_BTS_TRX = 'osmo-bts-trx'
BIN_PCU = 'osmo-pcu'
@@ -92,10 +93,9 @@
raise RuntimeError('No lib/ in %r' % self.inst)
self.env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
- self.launch_process(OsmoBtsTrx.BIN_BTS_TRX, '-r', '1',
+ self.proc_bts = self.launch_process(OsmoBtsTrx.BIN_BTS_TRX, '-r', '1',
'-c', os.path.abspath(self.config_file),
'-i', self.bsc.addr())
- #self.launch_process(OsmoBtsTrx.BIN_PCU, '-r', '1')
self.suite_run.poll()
def launch_process(self, binary_name, *args):
@@ -146,6 +146,11 @@
self.dbg(conf=values)
return values
+ def ready_for_pcu(self):
+ if not self.proc_bts or not self.proc_bts.is_running:
+ return False
+ return 'BTS is up' in (self.proc_bts.get_stderr() or '')
+
def set_bsc(self, bsc):
self.bsc = bsc
diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py
index fc546ae..1a7b139 100644
--- a/src/osmo_gsm_tester/bts_sysmo.py
+++ b/src/osmo_gsm_tester/bts_sysmo.py
@@ -31,6 +31,7 @@
remote_dir = None
lac = None
cellid = None
+ proc_bts = None
REMOTE_DIR = '/osmo-gsm-tester'
BTS_SYSMO_BIN = 'osmo-bts-sysmo'
@@ -76,11 +77,11 @@
remote_lib = self.remote_inst.child('lib')
remote_binary = self.remote_inst.child('bin', 'osmo-bts-sysmo')
- self.launch_remote('osmo-bts-sysmo',
- ('LD_LIBRARY_PATH=%s' % remote_lib,
- remote_binary, '-c', remote_config_file, '-r', '1',
- '-i', self.bsc.addr()),
- remote_cwd=remote_run_dir)
+ self.proc_bts = self.launch_remote('osmo-bts-sysmo',
+ ('LD_LIBRARY_PATH=%s' % remote_lib,
+ remote_binary, '-c', remote_config_file, '-r', '1',
+ '-i', self.bsc.addr()),
+ remote_cwd=remote_run_dir)
def cleanup(self):
pass
@@ -105,6 +106,7 @@
proc = self._process_remote(name, popen_args, remote_cwd)
self.suite_run.remember_to_stop(proc)
proc.launch()
+ return proc
def run_local(self, name, popen_args):
run_dir = self.run_dir.new_dir(name)
@@ -153,6 +155,11 @@
self.dbg(conf=values)
return values
+ def ready_for_pcu(self):
+ if not self.proc_bts or not self.proc_bts.is_running:
+ return False
+ return 'BTS is up' in (self.proc_bts.get_stderr() or '')
+
def set_bsc(self, bsc):
self.bsc = bsc
diff --git a/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl
index 13cdb1d..906e7b9 100644
--- a/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl
@@ -9,6 +9,8 @@
logging level rll debug
logging level rr debug
logging level rsl debug
+ ! Level required by ready_for_pcu(): pcu info
+ logging level pcu info
!
%for phy in osmo_bts_octphy.phy_list:
diff --git a/src/osmo_gsm_tester/templates/osmo-bts-sysmo.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bts-sysmo.cfg.tmpl
index 69f7ac1..c9dde86 100644
--- a/src/osmo_gsm_tester/templates/osmo-bts-sysmo.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/osmo-bts-sysmo.cfg.tmpl
@@ -9,6 +9,8 @@
logging level rll debug
logging level rr debug
logging level rsl debug
+ ! Level required by ready_for_pcu(): pcu info
+ logging level pcu info
!
phy 0
instance 0
diff --git a/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
index c316e62..1931e9b 100644
--- a/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
@@ -12,6 +12,8 @@
logging level l1c info
logging level l1p error
logging level trx info
+ ! Level required by ready_for_pcu(): pcu info
+ logging level pcu info
!
phy 0
osmotrx ip local ${osmo_bts_trx.trx_local_ip}