Copy gnuradio zmq broker at runtime
The remotely run script is moved into a new subdir called "external",
where external utils to be used by osmo-gsm-tester (exernal to its own
process) are placed.
It needs to be in another directory because python files in obj/ are
loaded at startup of osmo-gsm-tester to dynamically load schemas.
Change-Id: I633a85294694f2c6efd58535729e9b8af166b3ff
diff --git a/src/osmo_gsm_tester/core/util.py b/src/osmo_gsm_tester/core/util.py
index 4c7b1dd..e035a72 100644
--- a/src/osmo_gsm_tester/core/util.py
+++ b/src/osmo_gsm_tester/core/util.py
@@ -441,4 +441,9 @@
assert val[:3] == 'a5_'
return 'a5 ' + val[3:]
+# Return abs path to external dir, where utils to run out of the process are placed
+def external_dir():
+ # ../external/
+ return os.path.abspath(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'external'))
+
# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/utils/bin/osmo-gsm-tester_zmq_broker.py b/src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py
similarity index 97%
rename from utils/bin/osmo-gsm-tester_zmq_broker.py
rename to src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py
index 3681e7e..fa69efd 100755
--- a/utils/bin/osmo-gsm-tester_zmq_broker.py
+++ b/src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py
@@ -1,5 +1,8 @@
#!/usr/bin/env python2
+# This is script is aimed at being copied to some remote target host where it
+# will be run by osmo-gsm-tester through ssh
+
from distutils.version import StrictVersion
from gnuradio.fft import window
diff --git a/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py b/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py
index ba43794..76fb1e5 100644
--- a/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py
+++ b/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py
@@ -19,6 +19,7 @@
import json
import socket
+import os
from ..core import log
from ..core import util
@@ -32,12 +33,18 @@
refcount = 0
instance = None
+ REMOTE_DIR = '/osmo-gsm-tester-grbroker'
+ TGT_SCRIPT_NAME = 'gnuradio_zmq_broker_remote.py' # File located in same directory as thine one
+ TGT_SCRIPT_LOCAL_PATH = os.path.join(util.external_dir(), TGT_SCRIPT_NAME)
+
def __init__(self):
super().__init__(log.C_RUN, 'gr_zmq_broker')
self.process = None
self.ctrl_port = 5005
self.run_dir = None
self.rem_host = None
+ self.remote_run_dir = None
+ self.remote_tgt_script = None
self.enb_li = []
self.addr = None
self.ctrl_sk = None
@@ -116,19 +123,27 @@
self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))
if not self.enb_li[0]._run_node.is_local():
self.rem_host = remote.RemoteHost(self.run_dir, self.enb_li[0]._run_node.ssh_user(), self.enb_li[0]._run_node.ssh_addr())
+ remote_prefix_dir = util.Dir(GrBroker.REMOTE_DIR)
+ self.remote_run_dir = util.Dir(remote_prefix_dir.child(self.name()))
+ self.remote_tgt_script = os.path.join(str(self.remote_run_dir), GrBroker.TGT_SCRIPT_NAME)
+ self.rem_host.recreate_remote_dir(self.remote_run_dir)
+ self.rem_host.scp('scp-grboker-to-remote', GrBroker.TGT_SCRIPT_LOCAL_PATH, self.remote_tgt_script)
def start(self):
self.num_enb_started += 1
self.dbg('start(%d/%d)' % (self.num_enb_started, len(self.enb_li)))
if self.num_enb_started == 1:
self.configure()
- args = ('osmo-gsm-tester_zmq_broker.py',
- '-c', str(self.ctrl_port),
- '-b', self.addr)
if self.enb_li[0]._run_node.is_local():
+ args = (GrBroker.TGT_SCRIPT_LOCAL_PATH,
+ '-c', str(self.ctrl_port),
+ '-b', self.addr)
self.process = process.Process(self.name(), self.run_dir, args)
else:
- self.process = self.rem_host.RemoteProcessSafeExit('zmq_gr_broker', util.Dir('/tmp/ogt_%s' % self.name()), args, wait_time_sec=7)
+ args = (self.remote_tgt_script,
+ '-c', str(self.ctrl_port),
+ '-b', self.addr)
+ self.process = self.rem_host.RemoteProcessSafeExit(self.name(), self.remote_run_dir, args, wait_time_sec=7)
self.testenv.remember_to_stop(self.process)
self.process.launch()
# Wait until all ENBs are configured/started: